Bypassing SOP with Iframes - 2
SOP-2'de Iframe'ler
Bu zorluk için çözümde, @Strellic_ önceki bölümdeki benzer bir yöntem öneriyor. Hadi kontrol edelim.
Bu zorlukta saldırganın aşması gereken şey:
Eğer yaparsa, innerHTML ile temizlenmeden sayfaya yazılacak HTML içeriği ile birlikte bir postmessage gönderebilir ve böylece XSS saldırısı gerçekleştirebilir.
İlk kontrolü atlatmanın yolu, window.calc.contentWindow'u undefined ve e.source'u null yapmaktır:
window.calc.contentWindow aslında document.getElementById("calc")'tır. document.getElementById'i ile değiştirebilirsiniz (Sanitizer API -burada-, varsayılan durumunda DOM clobbering saldırılarına karşı koruma sağlamak için yapılandırılmamıştır).
Bu nedenle, document.getElementById("calc")'i ile değiştirebilirsiniz. Böylece window.calc undefined olacaktır.
Şimdi, e.source'un undefined veya null olması gerekmektedir (çünkü
==
yerine===
kullanıldığından, null == undefined True'dır). Bunu elde etmek "kolaydır". Bir iframe oluşturup ondan bir postMessage gönderir ve hemen ardından iframe'i kaldırırsanız, e.origin null olacaktır. Aşağıdaki kodu kontrol edin:
İkinci kontrolü atlamak için token
değerini null
olarak göndermek ve window.token
değerini undefined
yapmak gerekmektedir:
token
değerininull
olarak postMessage ile göndermek basittir.window.token
,document.cookie
kullanangetCookie
fonksiyonunu çağırır. Unutmayın kinull
kökenli sayfalardadocument.cookie
'ye erişim her zaman bir hata tetikler. Bu,window.token
'ınundefined
değerine sahip olmasını sağlar.
Son çözüm @terjanq tarafından aşağıdaki gibi olmuştur:
Last updated