
Ein einfacher Scanner für CORS-Fehlkonfigurationen
Basierend auf der Forschung von James Kettle
CORStest ist ein kurzes & schmutziges Python-3-Tool, um Cross-Origin Resource Sharing (CORS)-Fehlkonfigurationen zu finden. Es benötigt eine Textdatei als Eingabe, die eine Liste von Domainnamen oder URLs enthalten kann. Derzeit werden die folgenden potenziellen Schwachstellen erkannt, indem ein bestimmter Origin-Request-Header gesendet und der Access-Control-Allow-Origin-Response-Header überprüft wird:
null-Origin über einen sandboxed iframe erzwungen wirdBeachten Sie, dass diese Schwachstellen/Fehlkonfigurationen vom Kontext abhängen. In den meisten Szenarien können sie nur von einem Angreifer ausgenutzt werden, wenn der Access-Control-Allow-Credentials-Header vorhanden ist (siehe -q-Flag).
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
Verwendung von CORStest zur Erkennung von Fehlkonfigurationen auf den Alexa Top-750-Seiten (mit Access-Control-Allow-Credentials):

Die Ausführung dieses CORStest auf den Alexa Top 1 Million Sites zeigt folgende Ergebnisse:

Beachten Sie, dass die absoluten Zahlen recht niedrig sind, da nur 3% der 1.000.000 getesteten Websites CORS auf ihrer Hauptseite aktiviert hatten und auf Fehlkonfigurationen analysiert werden konnten. Dieser Test dauerte etwa 14 Stunden auf einer ordentlichen Leitung (DSL). Wenn Sie eine schnelle Internetverbindung haben, versuchen Sie, die Anzahl der parallelen Prozesse auf -p50 oder mehr zu erhöhen.
Lesen Sie mehr über den technischen Hintergrund von CORS-Fehlkonfigurationen in diesem feinen Blogpost oder schauen Sie sich diesen Vortrag an. Eine groß angelegte Evaluierung von CORS-Fehlkonfigurationen mit CORStest ist hier dokumentiert.