8.3 KiB
मुख्य पृष्ठ को ब्लॉक करके postmessage चोरी करना
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- क्या आप साइबर सुरक्षा कंपनी में काम करते हैं? क्या आप अपनी कंपनी को HackTricks में विज्ञापित देखना चाहते हैं? या क्या आपको PEASS के नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने का उपयोग करने की आवश्यकता है? सदस्यता योजनाएं की जांच करें!
- The PEASS Family की खोज करें, हमारा विशेष NFT संग्रह
- आधिकारिक PEASS & HackTricks swag प्राप्त करें
- 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या मुझे Twitter पर फ़ॉलो करें 🐦@carlospolopm.
- हैकिंग ट्रिक्स साझा करें और PRs सबमिट करें hacktricks repo और hacktricks-cloud repo में।
Iframes के साथ RC जीतना
इस Terjanq writeup के अनुसार, नल उत्पन्न किए गए ब्लॉब निर्दिष्ट मूल्यों से सुरक्षा के लाभ के लिए अलग होते हैं, जिसका मतलब है कि यदि आप मुख्य पृष्ठ को व्यस्त रखते हैं, तो iframe पृष्ठ को निष्पादित किया जाएगा।
मूल रूप से उस चुनौती में एक अलग किया गया iframe निष्पादित होता है और उसके बाद जब यह लोड हो जाता है, माता पृष्ठ एक post संदेश भेजेगा जिसमें ध्वज होगा।
हालांकि, यह postmessage संचार XSS के लिए संकटग्रस्त है (यह iframe JS कोड निष्पादित कर सकता है)।
इसलिए, हमलावर का उद्देश्य है कि माता iframe बनाए, लेकिन पहले ही माता पृष्ठ को व्यस्त रखें और पेलोड को iframe में भेजें। जबकि माता व्यस्त होता है, iframe पेलोड निष्पादित करता है जो माता postmessage संदेश सुनेगा और ध्वज छिपाएगा।
अंत में, iframe ने पेलोड निष्पादित कर दिया है और माता पृष्ठ व्यस्त नहीं रहता है, इसलिए यह ध्वज भेजता है और पेलोड इसे लीक करता है।
लेकिन कैसे करें आप माता को व्यस्त रखें जब वह iframe उत्पन्न करता है और जब वह इसे संवेदनशील डेटा भेजने के लिए तैयार हो रहा है? मूल रूप से, आपको माता निष्पादित करने के लिए असिंक्रोन क्रिया ढूंढनी होगी। उदाहरण के लिए, उस चुनौती में माता postmessages को ऐसे सुन रहा था:
window.addEventListener('message', (e) => {
if (e.data == 'blob loaded') {
$("#previewModal").modal();
}
});
तो यह संभव था कि एक बड़ी पूर्णांक को postmessage में भेजा जाए, जो उस तुलना में स्ट्रिंग में परिवर्तित होगा, जिसमें कुछ समय लगेगा:
const buffer = new Uint8Array(1e7);
win?.postMessage(buffer, '*', [buffer.buffer]);
और उस पोस्टमैसेज को सटीक और भेजने के लिए, आपको आईफ्रेम बनाए जाने के बाद लेकिन जब यह पेयरेंट से डेटा प्राप्त करने के लिए तैयार होने के पहले ही setTimeout
के मिलीसेकंड के साथ खेलने की आवश्यकता होगी।
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- क्या आप साइबर सुरक्षा कंपनी में काम करते हैं? क्या आप अपनी कंपनी को HackTricks में विज्ञापित देखना चाहते हैं? या क्या आपको PEASS के नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने का उपयोग करने की आवश्यकता है? सदस्यता योजनाएं की जांच करें!
- The PEASS Family की खोज करें, हमारा विशेष NFT संग्रह
- आधिकारिक PEASS & HackTricks swag प्राप्त करें
- 💬 डिस्कॉर्ड समूह या टेलीग्राम समूह में शामिल हों या मुझे ट्विटर पर फ़ॉलो करें 🐦@carlospolopm.
- हैकिंग ट्रिक्स साझा करें और PRs के माध्यम से hacktricks रेपो और hacktricks-cloud रेपो में सबमिट करें।