hacktricks/pentesting-web/postmessage-vulnerabilities/blocking-main-page-to-steal-postmessage.md
Translator workflow 75e8745ba3 Translated to Hindi
2023-11-06 08:38:02 +00:00

8.3 KiB

मुख्य पृष्ठ को ब्लॉक करके postmessage चोरी करना

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

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 🎥