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 die oplossing vir hierdie uitdaging, @Strellic_ stel 'n soortgelyke metode voor soos in die vorige afdeling. Kom ons kyk daarna.
In hierdie uitdaging moet die aanvaller bypass hierdie:
As hy dit doen, kan hy 'n postmessage met HTML-inhoud stuur wat in die bladsy geskryf gaan word met innerHTML
sonder sanitasie (XSS).
Die manier om die eerste kontrole te omseil, is deur window.calc.contentWindow
undefined
te maak en e.source
null
te maak:
window.calc.contentWindow
is eintlik document.getElementById("calc")
. Jy kan document.getElementById
oorheers met <img name=getElementById />
(let op dat die Sanitizer API -hier- nie geconfigureer is om teen DOM oorheersing aanvalle in sy standaardtoestand te beskerm nie).
Daarom kan jy document.getElementById("calc")
oorheers met <img name=getElementById /><div id=calc></div>
. Dan sal window.calc
undefined
wees.
Nou moet ons hê dat e.source
undefined
of null
moet wees (want ==
word gebruik in plaas van ===
, null == undefined
is True
). Om dit te kry is "maklik". As jy 'n iframe skep en 'n postMessage daaruit stuur en onmiddellik die iframe verwyder, sal e.origin
null
wees. Kontroleer die volgende kode.
Om die tweede kontrole oor die token te omseil, stuur token
met die waarde null
en maak window.token
se waarde undefined
:
Om token
in die postMessage met die waarde null
te stuur, is trivial.
window.token
in die oproep van die funksie getCookie
wat document.cookie
gebruik. Let daarop dat enige toegang tot document.cookie
in null
oorsprong bladsye 'n error veroorsaak. Dit sal maak dat window.token
die waarde undefined
het.
Die finale oplossing deur @terjanq is die volgende:
Leer & oefen AWS Hacking:HackTricks Opleiding AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Opleiding GCP Red Team Expert (GRTE)