Bypassing SOP with Iframes - 2
Iframes in SOP-2
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ındadocument.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
'unundefined
veyanull
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'detoken
göndermek basittir.window.token
,document.cookie
kullanangetCookie
fonksiyonunu çağırırken.null
kökenli sayfalardadocument.cookie
erişiminin bir hata tetikleyeceğini unutmayın. Bu,window.token
değerininundefined
olmasına neden olacaktır.
Son çözüm @terjanq tarafından şudur:
Last updated