
Un semplice scanner di configurazioni errate CORS
Basato sulla ricerca di James Kettle
CORStest è uno strumento Python 3 rapido e sporco per trovare configurazioni errate di Cross-Origin Resource Sharing (CORS). Prende un file di testo come input che può contenere un elenco di nomi di dominio o URL. Attualmente, vengono rilevate le seguenti potenziali vulnerabilità inviando uno specifico header di richiesta Origin e controllando l'header di risposta Access-Control-Allow-Origin:
null tramite un iframe in sandboxNota che queste vulnerabilità/configurazioni errate dipendono dal contesto. Nella maggior parte degli scenari, possono essere sfruttate da un attaccante solo se l'header Access-Control-Allow-Credentials è presente (vedi flag -q).
usage: corstest.py [arguments] infile
positional arguments:
infile File con elenco di domini o URL
optional arguments:
-h, --help mostra questo messaggio di aiuto ed esce
-c name=value Invia cookie con tutte le richieste
-p processes multiprocessing (predefinito: 32)
-s forza sempre richieste ssl/tls
-q silenzioso, solo allow-credentials
-v produce un output più verboso
Uso di CORStest per rilevare configurazioni errate per i primi 750 siti Alexa (con Access-Control-Allow-Credentials):

Eseguendo questo CORStest sui primi 1 milione di siti Alexa si ottengono i seguenti risultati:

Nota che i numeri assoluti sono piuttosto bassi, perché solo il 3% dei 1.000.000 di siti web testati aveva CORS abilitato sulla loro pagina principale e poteva essere analizzato per configurazioni errate. Questo test ha impiegato circa 14 ore su una linea decente (DSL). Se hai una connessione Internet veloce, prova ad aumentare il numero di processi paralleli a -p50 o più.
Leggi di più sul background tecnico delle configurazioni errate CORS in questo bel blogpost o guarda questo talk. Una valutazione su larga scala delle configurazioni errate CORS usando CORStest è documentata qui.