# postMessage()

## Description

Certains sites contournent SOP en utilisant postMessage(). Cette méthode est une API web qui utilise la syntaxe JavaScript. Vous pouvez l'utiliser pour envoyer des messages texte vers une autre fenêtre:

`<fenêtre de réception>.postMessage(<message à envoyer>, <origin de la cible>);`

La fenêtre de réception traitera alors le message en utilisant un gestionnaire d'événements qui sera déclenché lorsque la fenêtre de réception reçoit un message:

`window.addEventListener("message",<event handler function>);`

Étant donné que l'utilisation de postMessage() nécessite que l'expéditeur obtienne une référence au fenêtre du récepteur, les messages ne peuvent être envoyés qu'entre une fenêtre et ses iframes ou pop-up.

## Détection

Un site pourrait utiliser postMessage() si vous inspectez la page (par exemple, en faisant un clic droit dessus dans Chrome et en choisissant Inspecter, puis en naviguant vers Event Listeners) et qu'en recherchent un Event listener vous trouvez un résultat comme celui-ci.

<figure><img src="/files/XzbREU6fcSvpOqt2bgyn" alt=""><figcaption></figcaption></figure>

## Exploitation

### Extension

#### MessPostage

MessPostage est une extension permettant de remonter si les sites consultés utilisent l'API postMessage.

ressource: <https://github.com/Sjord/messpostage>

### Outils

#### Posta

Posta est un outil permettant de rechercher les Cross-Document Messaging communications et d'exploiter les vulnérabilités liées à postMessage.

ressource: <https://github.com/benso-io/posta>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://blog.s1rn3tz.ovh/pentest-web/sop-bypass/postmessage.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
