
Um simples scanner de má configuração CORS
Baseado na pesquisa de James Kettle
CORStest é uma ferramenta rápida & suja em Python 3 para encontrar configurações incorretas de Cross-Origin Resource Sharing (CORS). Ela recebe como entrada um arquivo de texto que pode conter uma lista de nomes de domínio ou URLs. Atualmente, as seguintes vulnerabilidades potenciais são detectadas enviando um certo cabeçalho de requisição Origin e verificando o cabeçalho de resposta Access-Control-Allow-Origin:
null através de um iframe em sandboxNote que essas vulnerabilidades/configurações incorretas dependem do contexto. Na maioria dos cenários, elas só podem ser exploradas por um atacante se o cabeçalho Access-Control-Allow-Credentials estiver presente (veja a flag -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
Uso do CORStest para detectar configurações incorretas nos 750 sites mais populares do Alexa (com Access-Control-Allow-Credentials):

Executar este CORStest nos 1 milhão de sites mais populares do Alexa top 1 million revela os seguintes resultados:

Note que os números absolutos são bastante baixos, porque apenas 3% dos 1.000.000 sites testados tinham CORS habilitado em sua página principal e puderam ser analisados quanto a configurações incorretas. Este teste levou cerca de 14 horas em uma linha decente (DSL). Se você tiver uma conexão rápida de Internet, tente aumentar o número de processos paralelos para -p50 ou mais.
Leia mais sobre o contexto técnico das configurações incorretas de CORS neste excelente blogpost ou confira esta palestra. Uma avaliação em larga escala de configurações incorretas de CORS usando CORStest está documentada aqui.