4.5 KiB
Blokiranje glavne stranice da bi se ukrao postmessage
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!
- Radite li u kompaniji za kibernetičku bezbednost? Želite li da vidite svoju kompaniju reklamiranu na HackTricks-u? Ili želite da imate pristup najnovijoj verziji PEASS-a ili preuzmete HackTricks u PDF formatu? Proverite SUBSCRIPTION PLANS!
- Otkrijte The PEASS Family, našu kolekciju ekskluzivnih NFT-ova
- Nabavite zvanični PEASS & HackTricks swag
- Pridružite se 💬 Discord grupi ili telegram grupi ili me pratite na Twitter-u 🐦@carlospolopm.
- Podelite svoje hakovanje trikove slanjem PR-ova na hacktricks repo i hacktricks-cloud repo.
Pobeda RC-ova sa Iframe-ovima
Prema ovom Terjanq writeup-u blob dokumenti kreirani iz null origin-a su izolovani radi bezbednosti, što znači da ako održavate zauzetu glavnu stranicu, iframe stranica će biti izvršena.
U suštini, u tom izazovu se izvršava izolovani iframe i odmah nakon što se učita, roditeljska stranica će poslati post poruku sa flag-om.
Međutim, ta komunikacija putem postmessage-a je ranjiva na XSS (iframe može izvršiti JS kod).
Stoga, cilj napadača je da omogući roditelju da kreira iframe, ali pre nego što roditeljska stranica pošalje osetljive podatke (flag), drži je zauzetom i šalje payload iframe-u. Dok je roditelj zauzet, iframe izvršava payload koji će biti neki JS kod koji će slušati postmessage poruku roditelja i procuriti flag.
Na kraju, iframe je izvršio payload i roditeljska stranica prestaje biti zauzeta, pa šalje flag i payload ga otkriva.
Ali kako možete učiniti da roditelj bude zauzet odmah nakon što generiše iframe i samo dok čeka da iframe bude spreman da pošalje osetljive podatke? U suštini, trebate pronaći asinhronu akciju koju možete da izvršite na roditelju. Na primer, u tom izazovu roditelj je slušao post poruke na sledeći način:
window.addEventListener('message', (e) => {
if (e.data == 'blob loaded') {
$("#previewModal").modal();
}
});
tako je bilo moguće poslati veliki celi broj u postmessage koji će biti pretvoren u string u toj poređenju, što će oduzeti neko vreme:
const buffer = new Uint8Array(1e7);
win?.postMessage(buffer, '*', [buffer.buffer]);
I kako biste bili precizni i poslali taj postmessage odmah nakon što je iframe kreiran, ali pre nego što je spreman da primi podatke od roditelja, moraćete da manipulišete milisekundama setTimeout
.
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!
- Da li radite u cybersecurity kompaniji? Želite li da vidite svoju kompaniju reklamiranu na HackTricks-u? Ili želite da imate pristup najnovijoj verziji PEASS-a ili preuzmete HackTricks u PDF formatu? Proverite SUBSCRIPTION PLANS!
- Otkrijte The PEASS Family, našu kolekciju ekskluzivnih NFT-ova
- Nabavite zvanični PEASS & HackTricks swag
- Pridružite se 💬 Discord grupi ili telegram grupi ili me pratite na Twitter-u 🐦@carlospolopm.
- Podelite svoje hakovanje trikove slanjem PR-ova na hacktricks repo i hacktricks-cloud repo.