mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-18 09:03:30 +00:00
38 lines
3.8 KiB
Markdown
38 lines
3.8 KiB
Markdown
# Bloquer la page principale pour voler des postmessages
|
|
|
|
<details>
|
|
|
|
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
|
|
|
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
|
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
|
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
* **Partagez vos astuces de piratage en soumettant des PR au [dépôt hacktricks](https://github.com/carlospolop/hacktricks) et au [dépôt hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
|
|
|
</details>
|
|
|
|
## Gagner des RC avec des iframes
|
|
|
|
Selon ce [**writeup de Terjanq**](https://gist.github.com/terjanq/7c1a71b83db5e02253c218765f96a710), les documents blob créés à partir d'origines nulles sont isolés pour des raisons de sécurité, ce qui signifie que si vous maintenez occupée la page principale, la page iframe sera exécutée.
|
|
|
|
En gros, dans ce défi, une **iframe isolée est exécutée** et juste **après** qu'elle soit **chargée**, la **page parent** va **envoyer un message post** avec le **flag**.\
|
|
Cependant, cette communication postmessage est **vulnérable à XSS** (l'**iframe** peut exécuter du code JS).
|
|
|
|
Par conséquent, l'objectif de l'attaquant est de **laisser le parent créer l'iframe**, mais **avant** de laisser la **page parent** **envoyer** les données sensibles (**flag**) **le garder occupé** et envoyer la **charge utile à l'iframe**. Pendant que le **parent est occupé**, l'**iframe exécute la charge utile** qui sera du JS qui écoutera le **message postmessage du parent et divulguera le flag**.\
|
|
Enfin, l'iframe a exécuté la charge utile et la page parent cesse d'être occupée, donc elle envoie le flag et la charge utile le divulgue.
|
|
|
|
Mais comment pourriez-vous faire en sorte que le parent soit **occupé juste après avoir généré l'iframe et juste pendant qu'il attend que l'iframe soit prête à envoyer les données sensibles ?** Fondamentalement, vous devez trouver une **action asynchrone** que vous pourriez faire exécuter au parent. Par exemple, dans ce défi, le parent **écoutait** les **postmessages** comme ceci :
|
|
```javascript
|
|
window.addEventListener('message', (e) => {
|
|
if (e.data == 'blob loaded') {
|
|
$("#previewModal").modal();
|
|
}
|
|
});
|
|
```
|
|
Il était possible d'envoyer un **grand entier dans un postmessage** qui sera **converti en chaîne de caractères** dans cette comparaison, ce qui prendra du temps:
|
|
```bash
|
|
const buffer = new Uint8Array(1e7);
|
|
win?.postMessage(buffer, '*', [buffer.buffer]);
|
|
```
|
|
Et afin d'être précis et d'**envoyer** ce **postmessage** juste **après** que l'**iframe** soit créé mais **avant** qu'il ne soit **prêt** à recevoir les données du parent, vous devrez **jouer avec les millisecondes d'un `setTimeout`**.
|