hacktricks/pentesting-web/postmessage-vulnerabilities/blocking-main-page-to-steal-postmessage.md

57 lines
4.5 KiB
Markdown
Raw Normal View History

# Blocking main page to steal postmessage
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-10-13 00:56:34 +00:00
<details>
<summary>Support HackTricks</summary>
2022-10-13 00:56:34 +00:00
* 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.
2022-10-13 00:56:34 +00:00
</details>
{% endhint %}
2022-10-13 00:56:34 +00:00
## Winning RCs with Iframes
2022-10-13 00:56:34 +00:00
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.
2022-10-13 00:56:34 +00:00
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).
2022-10-13 00:56:34 +00:00
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.
2022-10-13 00:56:34 +00:00
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:
2022-10-13 00:56:34 +00:00
```javascript
window.addEventListener('message', (e) => {
2024-02-10 15:36:32 +00:00
if (e.data == 'blob loaded') {
$("#previewModal").modal();
}
2022-10-13 00:56:34 +00:00
});
```
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:
2022-10-13 00:56:34 +00:00
```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:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-10-13 00:56:34 +00:00
<details>
<summary>Support HackTricks</summary>
2022-10-13 00:56:34 +00:00
* 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.
2022-10-13 00:56:34 +00:00
</details>
{% endhint %}