
Простой сканер неправильной конфигурации CORS
Основано на исследованиях James Kettle
CORStest — это быстрый и грязный инструмент на Python 3 для поиска ошибок конфигурации Cross-Origin Resource Sharing (CORS). В качестве входных данных принимает текстовый файл, который может содержать список доменных имен или URL. В настоящее время обнаруживаются следующие потенциальные уязвимости путем отправки определенного заголовка запроса Origin и проверки заголовка ответа Access-Control-Allow-Origin:
null через изолированный iframeОбратите внимание, что эти уязвимости/ошибки конфигурации зависят от контекста. В большинстве сценариев их может использовать атакующий только при наличии заголовка Access-Control-Allow-Credentials (см. флаг -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
Использование CORStest для поиска ошибок конфигурации в топ-750 сайтах Alexa (с Access-Control-Allow-Credentials):

Запуск этого CORStest на топ-1 миллиона сайтов Alexa показывает следующие результаты:

Обратите внимание, что абсолютные числа довольно низкие, потому что только 3% из 1 000 000 протестированных веб-сайтов имели включенный CORS на своей главной странице и могли быть проанализированы на предмет ошибок конфигурации. Этот тест занял около 14 часов на приличной линии (DSL). Если у вас быстрое интернет-соединение, попробуйте увеличить количество параллельных процессов до -p50 или более.
Подробнее о технической основе ошибок конфигурации CORS читайте в этом отличном блог-посте или посмотрите это выступление. Крупномасштабная оценка ошибок конфигурации CORS с использованием CORStest описана здесь.