Bypassing SOP with Iframes - 2
Iframes in SOP-2
In die oplossing vir hierdie uitdaging, stel @Strellic_ 'n soortgelyke metode voor as in die vorige afdeling. Kom ons kyk daarna.
In hierdie uitdaging moet die aanvaller hierdie omseiling:
As hy dit doen, kan hy 'n postmessage stuur met HTML-inhoud wat in die bladsy geskryf gaan word met innerHTML
sonder sanitasie (XSS).
Die manier om die eerste toets te omseil, is deur window.calc.contentWindow
na undefined
te maak en e.source
na null
:
window.calc.contentWindow
is eintlikdocument.getElementById("calc")
. Jy kandocument.getElementById
oorskryf met<img name=getElementById />
(let daarop dat die Sanitizer API -hier- nie ingestel is om teen DOM-oorskrywingsaanvalle te beskerm in sy verstektoestand nie).Daarom kan jy
document.getElementById("calc")
oorskryf met<img name=getElementById /><div id=calc></div>
. Dan salwindow.calc
undefined
wees.Nou moet ons hê dat
e.source
undefined
ofnull
is (omdat==
gebruik word in plaas van===
, isnull == undefined
True
). Dit is "maklik" om te kry. As jy 'n iframe skep en 'n postMessage daarvan stuur en onmiddellik die iframe verwyder, sale.origin
null
wees. Kyk na die volgende kode
Om die tweede kontrole oor die token te omseil, stuur jy die token
met die waarde null
en maak die waarde van window.token
undefined
:
Dit is maklik om die
token
in die postMessage te stuur met die waardenull
.window.token
word geroep deur die funksiegetCookie
watdocument.cookie
gebruik. Let daarop dat enige toegang totdocument.cookie
innull
oorsprong bladsye 'n fout veroorsaak. Dit sal veroorsaak datwindow.token
die waardeundefined
het.
Die finale oplossing deur @terjanq is as volg: hier.
Last updated