
Скрипт для обхода брандмауэра на основе записей истории DNS. Этот скрипт ищет исторические записи DNS A и проверяет, отвечает ли сервер на этот домен. Полезно для охотников за багбаунти.

Этот скрипт попытается найти:
Этот скрипт (зло)употребляет записи истории DNS. Он будет искать старые DNS A-записи и проверять, отвечает ли сервер на этот домен. Также он выводит уровень доверия, основанный на сходстве HTML-ответа возможного исходного сервера и брандмауэра.
Скрипт также получает IP-адреса поддоменов, поскольку мой собственный опыт показал, что IP поддоменов иногда указывают на исходный сервер основного домена.
Используйте скрипт следующим образом:
bash bypass-firewalls-by-DNS-history.sh -d example.com
-d --domain: домен для обхода-o --outputfile: выходной файл с IP-адресами-l --listsubdomains: список поддоменов для дополнительного покрытия-a --checkall: проверить все поддомены на обход WAFДля разбора вывода и автоматического сбора поддоменов требуется jq.
Установите с помощью apt install jq.
Чтобы проиллюстрировать, что мы понимаем под обходом WAF, посмотрите на схему ниже.

Обычный посетитель подключается к веб-сайту. Первый запрос — это DNS-запрос для получения IP-адреса сайта, чтобы браузер клиента знал, куда отправлять HTTP-запрос. Для сайтов за Cloudflare или другим публичным WAF ответ содержит IP-адрес самого WAF. Ваш HTTP-трафик проходит через WAF к исходному веб-серверу. WAF блокирует вредоносные запросы и защищает от (D)DoS-атак. Однако, если атакующий знает IP-адрес исходного веб-сервера и исходный веб-сервер принимает HTTP-трафик со всего интернета, атакующий может выполнить обход WAF: направить HTTP-трафик напрямую на исходный веб-сервер, минуя WAF.
Этот скрипт пытается найти этот исходный IP-адрес, чтобы вы могли подключаться напрямую к исходному веб-серверу. Атаки, такие как SQL-инъекции или SSRF, не фильтруются и могут быть успешно выполнены, в отличие от случая, когда между ними стоит WAF, который блокирует подобные атаки.
Когда вы находите обход, у вас есть два варианта:
/etc/hosts (Linux/Mac) или c:\Windows\System32\Drivers\etc\hosts (Windows). Добавьте запись вида: 80.40.10.22 vincentcox.com.
С этого момента ваш HTTP-трафик идёт напрямую к исходному веб-серверу. Вы можете проводить тестирование на проникновение как обычно, без блокировки запросов WAF.
Этот скрипт пригодится:
Используются следующие сервисы:
Почему на Bash, а не на Python?
Всё начиналось как несколько однострочных CURL-команд, превратилось в bash-скрипт, код расширялся всё больше и больше, и сожаление о том, что не использовал Python, росло пропорционально.
Я нахожу больше поддоменов своими инструментами?
Я знаю. Я не могу ожидать, что все установят все эти инструменты для перебора и перечисления DNS. Кроме того, я заранее не знаю, в какой папке находятся эти инструменты или под каким псевдонимом они вызываются. Вы можете предоставить свой собственный список с помощью -l, чтобы передать вывод этих инструментов для поддоменов в этот инструмент. Ожидаемый ввод — полный поддомен в каждой строке.
| Создатель проекта |
|---|
|
|
Обход WAF
Обход межсетевого экрана веб-приложений
История DNS
найти прямой/исходный IP сайта