
Un simple scanner de mauvaise configuration CORS
Basé sur les recherches de James Kettle
CORStest est un outil Python 3 rapide et sale pour trouver les mauvaises configurations du partage de ressources entre origines (CORS). Il prend en entrée un fichier texte pouvant contenir une liste de noms de domaine ou d'URL. Actuellement, les vulnérabilités potentielles suivantes sont détectées en envoyant un en-tête de requête Origin spécifique et en vérifiant l'en-tête de réponse Access-Control-Allow-Origin :
null via une iframe en bac à sableNotez que ces vulnérabilités/mauvaises configurations dépendent du contexte. Dans la plupart des scénarios, elles ne peuvent être exploitées par un attaquant que si l'en-tête Access-Control-Allow-Credentials est présent (voir l'option -q).
usage: corstest.py [arguments] infile
positional arguments:
infile File with domain or URL list
optional arguments:
-h, --help show this help message and exit
-c name=value Send cookie with all requests
-p processes multiprocessing (default: 32)
-s always force ssl/tls requests
-q quiet, allow-credentials only
-v produce a more verbose output
Utilisation de CORStest pour détecter les mauvaises configurations sur les 750 premiers sites Alexa (avec Access-Control-Allow-Credentials) :

L'exécution de ce CORStest sur les 1 million de premiers sites Alexa révèle les résultats suivants :

Notez que les nombres absolus sont assez faibles, car seulement 3 % des 1 000 000 sites web testés avaient CORS activé sur leur page principale et ont pu être analysés pour des mauvaises configurations. Ce test a pris environ 14 heures sur une ligne décente (DSL). Si vous avez une connexion Internet rapide, essayez d'augmenter le nombre de processus parallèles à -p50 ou plus.
Lisez-en plus sur le contexte technique des mauvaises configurations CORS dans cet excellent article de blog ou regardez cette présentation. Une évaluation à grande échelle des mauvaises configurations CORS utilisant CORStest est documentée ici.