
🔎 Найти исходные серверы веб-сайтов за CloudFlare, используя данные интернет-сканирования от Censys.
Важное примечание: начиная с конца 2024 года, Censys больше не предоставляет доступ к API для бесплатных аккаунтов. Это означает, что CloudFlair больше не работает с бесплатными аккаунтами Censys.
CloudFlair — это инструмент для поиска исходных серверов сайтов, защищённых CloudFlare (или CloudFront), которые公開暴露 и не ограничивают должным образом сетевой доступ к соответствующим диапазонам IP-адресов CDN.
Инструмент использует данные сканирования всего интернета от Censys для поиска открытых IPv4-хостов, представляющих SSL-сертификат, связанный с доменным именем цели. Требуются ключи API, которые можно получить из вашего аккаунта Censys.
Более подробно о этой распространённой ошибке конфигурации и о том, как работает CloudFlair, читайте в сопутствующей статье в блоге: https://blog.christophetd.fr/bypassing-cloudflare-using-internet-wide-scan-data/.
Вот как CloudFlair выглядит в действии.
$ python cloudflair.py myvulnerable.site
[*] Цель, похоже, находится за CloudFlare.
[*] Поиск сертификатов, соответствующих "myvulnerable.site", с помощью Censys
[*] Найдено 75 сертификатов, соответствующих "myvulnerable.site".
[*] Поиск IPv4-хостов, представляющих эти сертификаты...
[*] Найдено 10 IPv4-хостов, представляющих сертификат, выданный для "myvulnerable.site".
- 51.194.77.1
- 223.172.21.75
- 18.136.111.24
- 127.200.220.231
- 177.67.208.72
- 137.67.239.174
- 182.102.141.194
- 8.154.231.164
- 37.184.84.44
- 78.25.205.83
[*] Получение главной страницы цели по адресу https://myvulnerable.site
[*] Тестирование возможных исходных серверов
- 51.194.77.1
- 223.172.21.75
- 18.136.111.24
ответил с неожиданным HTTP-статусом 404
- 127.200.220.231
превышен тайм-аут через 3 секунды
- 177.67.208.72
- 137.67.239.174
- 182.102.141.194
- 8.154.231.164
- 37.184.84.44
- 78.25.205.83
[*] Найдено 2 вероятных исходных сервера для myvulnerable.site!
- 177.67.208.72 (HTML-содержимое идентично myvulnerable.site)
- 182.102.141.194 (HTML-содержимое идентично myvulnerable.site)
(IP-адреса в этом примере были обфусцированы и заменены случайно сгенерированными IP)
$ export CENSYS_API_ID=...
$ export CENSYS_API_SECRET=...
$ git clone https://github.com/christophetd/CloudFlair.git
cd CloudFlair
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python cloudflair.py myvulnerable.site
или для CloudFront
python cloudflair.py myvulnerable.site --cloudfront
$ python cloudflair.py --help
usage: cloudflair.py [-h] [-o OUTPUT_FILE] [--censys-api-id CENSYS_API_ID] [--censys-api-secret CENSYS_API_SECRET] [--cloudfront] domain
positional arguments:
domain Сканируемый домен
options:
-h, --help показать это справочное сообщение и выйти
-o OUTPUT_FILE, --output OUTPUT_FILE
Файл для вывода вероятных исходных серверов (по умолчанию: None)
--censys-api-id CENSYS_API_ID
Censys API ID. Также может быть задан с помощью переменной окружения CENSYS_API_ID (по умолчанию: None)
--censys-api-secret CENSYS_API_SECRET
Censys API secret. Также может быть задан с помощью переменной окружения CENSYS_API_SECRET (по умолчанию: None)
--cloudfront Проверять CloudFront вместо CloudFlare. (по умолчанию: False)
Предоставляется лёгкий Docker-образ CloudFlair (christophetd/cloudflair). Сканирование можно легко запустить с помощью следующей команды.
$ docker run --rm -e CENSYS_API_ID=ваш-id -e CENSYS_API_SECRET=ваш-secret christophetd/cloudflair myvulnerable.site
Вы также можете создать файл с определением переменных окружения и использовать опцию Docker --env-file.
$ cat censys.env
CENSYS_API_ID=ваш-id
CENSYS_API_SECRET=ваш-secret
$ docker run --rm --env-file=censys.env christophetd/cloudflair myvulnerable.site
Протестировано на Python 3.6. Не стесняйтесь открыть issue, если у вас есть сообщения об ошибках или вопросы.