Blocking main page to steal postmessage
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
इस Terjanq writeup के अनुसार, null origins से बनाए गए blob दस्तावेज़ सुरक्षा लाभों के लिए अलग किए जाते हैं, जिसका अर्थ है कि यदि आप मुख्य पृष्ठ को व्यस्त रखते हैं, तो iframe पृष्ठ निष्पादित होगा।
बुनियादी रूप से, उस चुनौती में एक अलग iframe निष्पादित होता है और ठीक बाद में जब यह लोड होता है, तो माता-पिता पृष्ठ एक पोस्ट संदेश के साथ झंडा भेजने वाला है। हालांकि, वह postmessage संचार XSS के प्रति संवेदनशील है (iframe JS कोड निष्पादित कर सकता है)।
इसलिए, हमलावर का लक्ष्य है कि माता-पिता को iframe बनाने दें, लेकिन पहले माता-पिता पृष्ठ को संवेदनशील डेटा (झंडा) भेजने से व्यस्त रखें और payload को iframe में भेजें। जबकि माता-पिता व्यस्त हैं, iframe payload को निष्पादित करता है जो कुछ JS होगा जो माता-पिता postmessage संदेश को सुनता है और झंडा लीक करता है। अंत में, iframe ने payload को निष्पादित किया और माता-पिता पृष्ठ व्यस्त रहना बंद कर देता है, इसलिए यह झंडा भेजता है और payload इसे लीक करता है।
लेकिन आप माता-पिता को व्यस्त कैसे रख सकते हैं जब उसने iframe उत्पन्न किया और बस जब वह संवेदनशील डेटा भेजने के लिए iframe के तैयार होने की प्रतीक्षा कर रहा है? बुनियादी रूप से, आपको async action खोजने की आवश्यकता है जिसे आप माता-पिता को निष्पादित करने के लिए बना सकते हैं। उदाहरण के लिए, उस चुनौती में माता-पिता postmessages को इस तरह सुन रहा था:
इसलिए एक बड़ा पूर्णांक एक पोस्टमैसेज में भेजना संभव था जिसे उस तुलना में स्ट्रिंग में परिवर्तित किया जाएगा, जिसमें कुछ समय लगेगा:
और सटीकता के लिए और उस postmessage को iframe के बनने के बाद लेकिन इसके parent से डेटा प्राप्त करने के लिए तैयार होने से पहले भेजने के लिए, आपको setTimeout
के मिलिसेकंड के साथ खेलना होगा।
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)