Blokkeer hoofblad om postmessage te steel

Reading time: 3 minutes

tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Ondersteun HackTricks

Wen RC's met Iframes

Volgens hierdie Terjanq skrywe is blob-dokumente wat van nul oorspronge geskep is, geïsoleer vir sekuriteitsvoordele, wat beteken dat as jy die hoofblad besig hou, die iframe-blad uitgevoer gaan word.

Basies in daardie uitdaging word 'n geïsoleerde iframe uitgevoer en reg na dit gelaai is, gaan die ouer blad 'n post boodskap met die vlag stuur.
Echter, daardie postmessage kommunikasie is kwulnerbaar vir XSS (die iframe kan JS-kode uitvoer).

Daarom is die doel van die aanvaller om die ouer te laat die iframe skep, maar voor die ouer blad die sensitiewe data (vlag) stuur, hou dit besig en stuur die payload na die iframe. Terwyl die ouer besig is, voer die iframe die payload uit wat 'n paar JS sal wees wat sal luister vir die ouer postmessage boodskap en die vlag sal lek.
Uiteindelik het die iframe die payload uitgevoer en die ouerblad stop om besig te wees, so dit stuur die vlag en die payload lek dit.

Maar hoe kan jy die ouer laat besig wees reg nadat dit die iframe gegenereer het en net terwyl dit wag vir die iframe om gereed te wees om die sensitiewe data te stuur? Basies, jy moet 'n async aksie vind wat jy die ouer kan uitvoer. Byvoorbeeld, in daardie uitdaging was die ouer aan die luister na postmessages soos volg:

javascript
window.addEventListener("message", (e) => {
if (e.data == "blob loaded") {
$("#previewModal").modal()
}
})

so dit was moontlik om 'n groot heelgetal in 'n postmessage te stuur wat in daardie vergelyking na 'n string omskakel sal word, wat 'n bietjie tyd sal neem:

bash
const buffer = new Uint8Array(1e7);
win?.postMessage(buffer, '*', [buffer.buffer]);

En om presies te wees en daardie postmessage net na die iframe geskep is, maar voor dit gereed is om die data van die ouer te ontvang, sal jy moet speel met die millisekondes van 'n setTimeout.

tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Ondersteun HackTricks