Bypassing SOP with Iframes - 2
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)
In the çözüm for this meydan okuma, @Strellic_ proposes a similar method to the previous section. Let's check it.
In this challenge the attacker needs to bypass this:
Eğer yaparsa, sayfada innerHTML
ile yazılacak HTML içeriği ile bir postmessage gönderebilir, bu da sanitasyon olmadan (XSS).
ilk kontrolü atlatmanın yolu window.calc.contentWindow
'u undefined
ve e.source
'u null
yapmaktır:
window.calc.contentWindow
aslında document.getElementById("calc")
'dır. document.getElementById
'yi <img name=getElementById />
ile bozabilirsiniz (Sanitizer API -burada- varsayılan durumda DOM clobbering saldırılarına karşı koruma sağlamak için yapılandırılmamıştır).
Bu nedenle, document.getElementById("calc")
'yi <img name=getElementById /><div id=calc></div>
ile bozabilirsiniz. O zaman, window.calc
undefined
olacaktır.
Şimdi, e.source
'un undefined
veya null
olması gerekiyor (çünkü ==
yerine ===
kullanıldığı için, null == undefined
True
'dur). Bunu elde etmek "kolaydır". Eğer bir iframe oluşturur ve ondan bir postMessage gönderir ve hemen iframe'i kaldırırsanız, e.origin
null
olacak. Aşağıdaki kodu kontrol edin.
İkinci kontrolü atlatmanın yolu, token
değerini null
olarak gönderip window.token
değerini undefined
yapmaktır:
null
değeri ile postMessage'de token
göndermek basittir.
window.token
, document.cookie
kullanan getCookie
fonksiyonunu çağırırken. null
kökenli sayfalarda document.cookie
erişiminin bir hata tetikleyeceğini unutmayın. Bu, window.token
değerinin undefined
olmasına neden olacaktır.
Son çözüm @terjanq tarafından şudur:
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)