Bypassing SOP with Iframes - 2
SOP-2 में आईफ्रेम्स
इस चुनौती के समाधान में, @Strellic_ पिछले खंड की एक समान विधि का प्रस्ताव देते हैं। चलिए इसे जांचते हैं।
इस चुनौती में हमें अटकना है:
अगर वह ऐसा करता है, तो वह postmessage भेज सकता है जिसमें HTML सामग्री होगी जो innerHTML
के साथ लिखी जाएगी बिना सेनिटेशन के (XSS).
पहली जाँच को छलकरने का तरीका यह है कि window.calc.contentWindow
को undefined
और e.source
को null
बनाना:
window.calc.contentWindow
वास्तव मेंdocument.getElementById("calc")
है। आपdocument.getElementById
को<img name=getElementById />
के साथ लपेट सकते हैं (ध्यान दें कि Sanitizer API -यहाँ- DOM clobbering हमलों के खिलाफ सुरक्षा उपाय को डिफ़ॉल्ट स्थिति में संरचित नहीं किया गया है)।इसलिए, आप
document.getElementById("calc")
को<img name=getElementById /><div id=calc></div>
के साथ लपेट सकते हैं। फिर,window.calc
undefined
हो जाएगा।अब, हमें
e.source
कोundefined
याnull
होने की आवश्यकता है (क्योंकि==
का उपयोग===
के बजाय किया जाता है,null == undefined
True
है)। इसे प्राप्त करना "आसान" है। यदि आप एक iframe बनाते हैं और उससे postMessage भेजते हैं और तुरंत remove कर देते हैं, तोe.origin
null
हो जाएगा। निम्नलिखित कोड की जाँच करें
दूसरी जाँच को छलकरने के लिए token
को मान null
के साथ भेजकर और window.token
को मान undefined
करके:
token
को मानnull
के साथ postMessage भेजना सरल है।window.token
document.cookie
का उपयोग करने वालेgetCookie
फ़ंक्शन को कॉल करना है। ध्यान दें किnull
मूल स्थान पृष्ठों मेंdocument.cookie
तक पहुँच किसी त्रुटि को ट्रिगर करेगा। इससेwindow.token
का मानundefined
हो जाएगा।
@terjanq द्वारा अंतिम समाधान निम्नलिखित है:
Last updated