Blocking main page to steal postmessage
Reading time: 3 minutes
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाएँ देखें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमारे Twitter 🐦 @hacktricks_live** का पालन करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।
Winning RCs with Iframes
इसके अनुसार Terjanq writeup null origins से बनाए गए blob दस्तावेज़ सुरक्षा लाभों के लिए अलग किए जाते हैं, जिसका अर्थ है कि यदि आप मुख्य पृष्ठ को व्यस्त रखते हैं, तो iframe पृष्ठ निष्पादित होगा।
बुनियादी रूप से, उस चुनौती में एक अलग iframe निष्पादित होता है और ठीक बाद में जब यह लोड होता है, तो माता-पिता पृष्ठ एक पोस्ट संदेश के साथ झंडा भेजने वाला है।
हालांकि, वह postmessage संचार XSS के लिए संवेदनशील है (iframe JS कोड निष्पादित कर सकता है)।
इसलिए, हमलावर का लक्ष्य है कि माता-पिता iframe बनाए, लेकिन पहले माता-पिता पृष्ठ संवेदनशील डेटा (झंडा) को भेजने से पहले इसे व्यस्त रखे और पेलोड को iframe में भेजे। जबकि माता-पिता व्यस्त हैं, iframe पेलोड को निष्पादित करता है जो कुछ JS होगा जो माता-पिता postmessage संदेश को सुनता है और झंडा लीक करता है।
अंत में, iframe ने पेलोड को निष्पादित किया और माता-पिता पृष्ठ व्यस्त रहना बंद कर देता है, इसलिए यह झंडा भेजता है और पेलोड इसे लीक करता है।
लेकिन आप माता-पिता को व्यस्त कैसे रख सकते हैं जब उसने iframe उत्पन्न किया और बस जब वह संवेदनशील डेटा भेजने के लिए iframe के तैयार होने की प्रतीक्षा कर रहा है? बुनियादी रूप से, आपको async क्रिया खोजने की आवश्यकता है जिसे आप माता-पिता को निष्पादित करवा सकते हैं। उदाहरण के लिए, उस चुनौती में माता-पिता postmessages के लिए सुन रहा था:
window.addEventListener("message", (e) => {
if (e.data == "blob loaded") {
$("#previewModal").modal()
}
})
इसलिए एक बड़ा पूर्णांक एक पोस्टमैसेज में भेजना संभव था जिसे उस तुलना में स्ट्रिंग में परिवर्तित किया जाएगा, जिसमें कुछ समय लगेगा:
const buffer = new Uint8Array(1e7);
win?.postMessage(buffer, '*', [buffer.buffer]);
और सटीकता के लिए और उस postmessage को iframe के बनने के बाद लेकिन इसके तैयार होने से पहले डेटा प्राप्त करने के लिए भेजने के लिए, आपको setTimeout
के मिलीसेकंड के साथ खेलना होगा।
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाएँ देखें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमारे Twitter 🐦 @hacktricks_live** का पालन करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।