# Blocking main page to steal postmessage {% hint style="success" %} Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} ## Winning RCs with Iframes Laut diesem [**Terjanq writeup**](https://gist.github.com/terjanq/7c1a71b83db5e02253c218765f96a710) werden Blobs, die aus null Ursprüngen erstellt wurden, aus Sicherheitsgründen isoliert, was bedeutet, dass, wenn Sie die Hauptseite beschäftigt halten, die Iframe-Seite ausgeführt wird. Im Grunde genommen wird in dieser Herausforderung ein **isoliertes Iframe ausgeführt** und direkt **nachdem** es **geladen** wurde, wird die **Eltern**-Seite eine **post**-Nachricht mit dem **Flag** **senden**.\ Diese postmessage-Kommunikation ist jedoch **anfällig für XSS** (das **iframe** kann JS-Code ausführen). Daher besteht das Ziel des Angreifers darin, die **Elternseite das Iframe erstellen zu lassen**, aber **bevor** die **Eltern**-Seite die sensiblen Daten (**Flag**) **sendet**, **sie beschäftigt zu halten** und die **Payload an das Iframe** zu senden. Während die **Elternseite beschäftigt ist**, führt das **Iframe die Payload aus**, die ein JS sein wird, das auf die **postmessage-Nachricht der Elternseite hört und das Flag leakt**.\ Schließlich hat das Iframe die Payload ausgeführt und die Elternseite hört auf, beschäftigt zu sein, sodass sie das Flag sendet und die Payload es leakt. Aber wie könnten Sie die Elternseite **beschäftigt machen, direkt nachdem sie das Iframe generiert hat und nur während sie darauf wartet, dass das Iframe bereit ist, die sensiblen Daten zu senden?** Im Grunde genommen müssen Sie eine **asynchrone** **Aktion** finden, die Sie die Elternseite **ausführen** lassen können. Zum Beispiel hörte die Elternseite in dieser Herausforderung auf **postmessages** wie folgt: ```javascript window.addEventListener('message', (e) => { if (e.data == 'blob loaded') { $("#previewModal").modal(); } }); ``` so war es möglich, eine **große Ganzzahl in einer postmessage** zu senden, die in diesem Vergleich **in einen String umgewandelt** wird, was einige Zeit in Anspruch nehmen wird: ```bash const buffer = new Uint8Array(1e7); win?.postMessage(buffer, '*', [buffer.buffer]); ``` Und um genau zu sein und diese **postmessage** genau **nach** der Erstellung des **iframes** aber **vor** dem **bereit** zu senden, um die Daten vom Elternteil zu empfangen, müssen Sie mit den Millisekunden eines `setTimeout` **spielen**. {% hint style="success" %} Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %}