Содержание статьи
Для начала чуть подробнее расскажу о том, что такое WAF и как он работает. Например, в составе всем знакомого веб-сервера Apache есть модуль mod_security, который способен выполнять функции файрвола веб-приложений и помочь защитить твой сервис от какой-нибудь тривиальной DoS-атаки. Одна из таких атак — HTTP(S) GET-флуд, когда серверу посылают бесчисленное множество запросов на получение информации. Сервер неспособен обработать столько запросов за очень короткий промежуток и попросту падает.
Подобную функцию может предоставлять и какой-то облачный провайдер — для простоты разные сервисы такого типа я дальше буду называть просто WAF. Принцип их работы можно описать следующим образом.
- Веб-сервер, который нужно защитить, работает в обычном режиме без фильтрации опасных запросов, а WAF-сервис настроен на отдельном сервере компании, предоставляющей подобные услуги.
- В некой DNS-записи в качестве IP нужного сайта указывается не его настоящий адрес, а IP-адрес сервера WAF.
- После такой настройки все запросы к доменному имени сайта будут направляться не на сам сайт, а на WAF-сервер.
- Этот сервер принимает запрос, обрабатывает его и, если запрос удовлетворяет настроенным правилам, отсылает его на защищаемый сервер. WAF получает от этого сервера запрашиваемую информацию (веб-страницу, файл) и перенаправляет ее клиенту (пользователю).
Как обхитрить систему
Так как современные WAF блокируют множество вредоносных запросов, не получится использовать утилиты вроде sqlmap или WPScan. Также невозможны атаки типа DoS или DDoS.
Поэтому у нас есть два варианта действий.
- Сконструировать запрос таким образом, чтобы обойти правила, прописанные в WAF (см. статью «Как искать байпасы в современных Web Application Firewalls»).
- Отправить запрос напрямую к веб-серверу, минуя проверку WAF.
Дальше мы сконцентрируемся на втором пункте. Для его реализации нам нужно знать настоящий IP-адрес сервера и быть уверенными, что этот сервер способен принимать запросы напрямую из сети от кого угодно. Прямой IP-адрес сервера часто называют словом bypass. Иногда прямой доступ к нему специально сохраняют, чтобы сервер мог продолжить работу в случае неполадок на стороне WAF-сервисов.
Для этой цели мы будем использовать скрипт с длинным, но говорящим названием: Bypass firewalls by abusing DNS history.
Эта утилита пытается узнать настоящий IP-адрес нужного нам сервера сразу двумя методами.
- Анализ истории DNS-записей.
- Поиск поддоменов и последующий анализ их IP-адресов.
Ко всем найденным IP-адресам скрипт делает запросы для проверки.
INFO
Более подробное изложение теории ты можешь найти в статье «Вычисляем реальный IP сервера за Cloudflare/Qrator».
К практике
Скрипт находится в открытом доступе на GitHub. Я запускал его в Kali Linux, но он может работать и в других дистрибутивах.
Команды для установки на Kali выглядят так:
$ sudo apt install jq
$ git clone https://github.com/vincentcox/bypass-firewalls-by-DNS-history
Команда для установки в дистрибутиве BlackArch:
$ sudo pacman -S bypass-firewall-dns-history jq
Возвращаемся в Kali. Первой строчкой мы ставим необходимый модуль для работы скрипта, а второй скачиваем скрипт с GitHub. Чтобы получить справку по использованию тулзы, достаточно перейти в ее директорию и выполнить следующую команду:
$ bash bypass-firewalls-by-DNS-history.sh --help
Как показывает справка, разработчик скрипта предусмотрел несколько параметров:
-d
— обязательный ключ для использования скрипта. С его помощью мы указываем доменное имя сайта, для которого хотим найти bypass;-a
— с этим параметром найденные IP будут проверены не только для основного домена, но и для поддоменов;-l
— этот параметр позволяет подгрузить в скрипт твой список поддоменов, чтобы выполнить более детальную и точную проверку;-o
— данный параметр позволяет сохранить результат работы скрипта в файл, путь к которому указывается после параметра.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»