Bypassing SOP with Iframes - 1
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)
इस चुनौती में जो NDevTK और Terjanq द्वारा बनाई गई है, आपको कोड में XSS का लाभ उठाना है
मुख्य समस्या यह है कि मुख्य पृष्ठ data.body
भेजने के लिए DomPurify का उपयोग करता है, इसलिए अपने स्वयं के html डेटा को उस कोड में भेजने के लिए आपको bypass e.origin !== window.origin
करना होगा।
आइए देखते हैं कि वे क्या समाधान प्रस्तावित करते हैं।
जब //example.org
को एक sandboxed iframe में एम्बेड किया जाता है, तो पृष्ठ का origin null
होगा, यानी window.origin === null
। इसलिए <iframe sandbox="allow-scripts" src="https://so-xss.terjanq.me/iframe.php">
के माध्यम से iframe को एम्बेड करके हम null
origin को force कर सकते हैं।
यदि पृष्ठ embeddable था, तो आप उस तरीके से उस सुरक्षा को बायपास कर सकते थे (कुकीज़ को भी SameSite=None
पर सेट करने की आवश्यकता हो सकती है)।
कम ज्ञात तथ्य यह है कि जब sandbox value allow-popups
सेट किया जाता है, तो खुला हुआ पॉपअप सभी sandboxed attributes को inherit करेगा जब तक कि allow-popups-to-escape-sandbox
सेट न किया गया हो।
इसलिए, null origin से एक popup खोलने पर पॉपअप के अंदर window.origin
भी null
होगा।
इसलिए, इस चुनौती के लिए, कोई iframe बनाकर, कमजोर XSS कोड हैंडलर (/iframe.php
) वाले पृष्ठ के लिए popup खोल सकता है, क्योंकि window.origin === e.origin
क्योंकि दोनों null
हैं, यह संभव है कि एक payload भेजा जाए जो XSS का शोषण करेगा।
वह payload identifier प्राप्त करेगा और XSS को ऊपर के पृष्ठ (पृष्ठ जो पॉपअप खोलता है) पर वापस भेजेगा, जो स्थान को बदलेगा कमजोर /iframe.php
पर। चूंकि पहचानकर्ता ज्ञात है, इसलिए यह मायने नहीं रखता कि शर्त window.origin === e.origin
संतुष्ट नहीं है (याद रखें, origin वह popup है जो iframe से origin null
है) क्योंकि data.identifier === identifier
। फिर, XSS फिर से ट्रिगर होगा, इस बार सही origin में।
सीखें और AWS हैकिंग का अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE) सीखें और GCP हैकिंग का अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)