Blocking main page to steal postmessage

Reading time: 3 minutes

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

Winning RCs with Iframes

Kulingana na hii Terjanq writeup hati za blob zilizoundwa kutoka kwa asili za null zimewekwa mbali kwa faida za usalama, ambayo inamaanisha kwamba ikiwa utaweka ukurasa mkuu kuwa na shughuli nyingi, ukurasa wa iframe utaanzishwa.

Kimsingi katika changamoto hiyo iframe iliyotengwa inatekelezwa na mara baada ya kupakuliwa ukurasa wa mzazi uta tuma ujumbe wa post na bendera.
Hata hivyo, mawasiliano ya postmessage ni hayana usalama dhidi ya XSS (iframe inaweza kutekeleza msimbo wa JS).

Kwa hivyo, lengo la mshambuliaji ni kuruhusu mzazi kuunda iframe, lakini kabla ya kuruhusu ukurasa wa mzazi kutuma data nyeti (bendera) uweke shughuli nyingi na utume payload kwa iframe. Wakati mzazi ana shughuli nyingi iframe inatekeleza payload ambayo itakuwa ni JS itakayokuwa inasikiliza ujumbe wa postmessage wa mzazi na kuvuja bendera.
Hatimaye, iframe imekamilisha payload na ukurasa wa mzazi unakoma kuwa na shughuli nyingi, hivyo unatumia bendera na payload inavuja.

Lakini unaweza vipi kufanya mzazi kuwa na shughuli nyingi mara tu baada ya kuunda iframe na wakati tu inasubiri iframe iwe tayari kutuma data nyeti? Kimsingi, unahitaji kutafuta kitendo cha async ambacho unaweza kumfanya mzazi atekeleze. Kwa mfano, katika changamoto hiyo mzazi alikuwa akisikiliza postmessages kama hii:

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

ilikuwa inawezekana kutuma nambari kubwa katika postmessage ambayo itakuwa imebadilishwa kuwa mfuatano katika kulinganisha hiyo, ambayo itachukua muda:

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

Na ili uwe sahihi na tuma hiyo postmessage mara tu iframe inapotengenezwa lakini kabla ya kuwa tayari kupokea data kutoka kwa mzazi, utahitaji kucheza na milisekunde za setTimeout.

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks