Bypassing SOP with Iframes - 2
Iframes in SOP-2
In der Lösung für diese Herausforderung, @Strellic_ schlägt eine ähnliche Methode wie im vorherigen Abschnitt vor. Lass es uns überprüfen.
In dieser Herausforderung muss der Angreifer bypassen:
Wenn er das tut, kann er eine postmessage mit HTML-Inhalt senden, die auf der Seite mit innerHTML
ohne Sanitärmaßnahmen geschrieben wird (XSS).
Der Weg, um die erste Überprüfung zu umgehen, besteht darin, window.calc.contentWindow
auf undefined
und e.source
auf null
zu setzen:
window.calc.contentWindow
ist tatsächlichdocument.getElementById("calc")
. Sie könnendocument.getElementById
mit<img name=getElementById />
überschreiben (beachten Sie, dass die Sanitizer API -hier- nicht konfiguriert ist, um gegen DOM-Clobbering-Angriffe in ihrem Standardzustand zu schützen).Daher können Sie
document.getElementById("calc")
mit<img name=getElementById /><div id=calc></div>
überschreiben. Dann wirdwindow.calc
undefined
sein.Jetzt müssen wir
e.source
aufundefined
odernull
setzen (weil==
anstelle von===
verwendet wird, istnull == undefined
True
). Dies zu erreichen ist "einfach". Wenn Sie ein iframe erstellen und eine postMessage von ihm senden und das iframe sofort entfernen, wirde.origin
null
sein. Überprüfen Sie den folgenden Code
Um die zweite Überprüfung bezüglich des Tokens zu umgehen, wird token
mit dem Wert null
gesendet und der Wert von window.token
auf undefined
gesetzt:
Das Senden von
token
in der postMessage mit dem Wertnull
ist trivial.window.token
wird beim Aufruf der FunktiongetCookie
verwendet, diedocument.cookie
nutzt. Beachten Sie, dass jeder Zugriff aufdocument.cookie
innull
Ursprungsseiten einen Fehler auslöst. Dies führt dazu, dasswindow.token
den Wertundefined
hat.
Die endgültige Lösung von @terjanq ist die folgende:
Last updated