При тестировании веб-приложений возникает необходимость определить, использует ли целевое веб-приложение защиту в виде WAF. В этой статье я познакомлю вас с тремя инструментами, которые помогут определить тип WAF и проверить возможность обхода.
Еще по теме: Обход WAF с помощью SQLmap и Tor
Что такое WAF
WAF — аббревиатура от Web Application Firewall (брандмауэр веб-приложений) — это инструмент для фильтрации и блокировки вредоносного трафика.
Основные функции WAF:
- Защита веб-приложений от атак, таких как инъекции SQL, XSS, сканирование уязвимостей, DoS-атаки и пр.
- Фильтрация вредоносного трафика на основе правил. WAF может блокировать запросы, содержащие опасный код или признаки атак.
- Мониторинг и логирование веб-трафика. Позволяет анализировать активность пользователей и выявлять аномалии.
- Выступает в роли реверсного прокси перед веб-приложениями.
- Может интегрироваться с CDN, балансировщиками нагрузки и другими компонентами инфраструктуры.
WAF дополняет защиту веб-приложений на уровне сети, фильтруя и блокируя опасный трафик.
Определение WAF вручную
WAF часто блокируют явно вредоносный трафик. Чтобы спровоцировать брандмауэр и проверить его наличие, можно отправить HTTP-запрос на веб-приложение со вредоносным параметром:
1 |
https://example.com/?p4yl04d3=<script>alert(document.cookie)</script> |
Ответ HTTP может отличаться от ожидаемого для посещаемой веб-страницы. WAF может вернуть свою собственную страницу, как показано ниже, или другой код состояния, обычно в 400-ом диапазоне.
Можно обнаружить дополнительные признаки брандмауэра через веб-прокси, cURL или вкладку «Сеть» в инструментах разработчика браузера:
- Название WAF в заголовке Server (например, Server: cloudflare)
- Дополнительные заголовки HTTP-ответа, связанные с WAF (например, CF-RAY: xxxxxxxxxxx)
- Куки, которые, похоже, устанавливаются WAF (например, заголовок Set-Cookie: __cfduid=xxxxx)
- Уникальный код ответа при отправке вредоносных запросов (например, 412)
Помимо создания вредоносных запросов и анализа ответов, брандмауэры также можно обнаружить и определить, отправив TCP-пакет FIN/RST на сервер или используя побочный канал атаки. Например, время реакции брандмауэра на разные нагрузки может дать подсказки о используемом WAF.
Инструменты для определения WAF
Вот несколько инструментов для определения и обхода WAF:
- Nmap
- Wafw00f
- WhatWaf
- WAFNinja
Использование Nmap для определения WAF
Nmap Scripting Engine (NSE) включает сценарии для обнаружения брандмауэров.
1 |
$ nmap --script=http-waf-fingerprint,http-waf-detect -p443 example.com |
Еще по теме: Использование Nmap NSE для поиска уязвимостей
Использование Wafw00f для определения типа WAF
WafW00f — полезный скрипт Python, способный определить тип брандмауэр веб-приложений (WAF). Wafw00f отправляет популярные полезные нагрузки на заданное доменное имя и оценивает реакцию веб-сервера.
1 |
$ wafw00f example.com |
Подробнее см. в статье «Использование WafW00f для определения типа WAF».
Определение WAF с помощью WhatWaf
WhatWaf кроме определения WAF, используя скрипты несанкционированного доступа и оценивая реакцию веб-сервера на различные полезные нагрузки, пытается найти способы обхода WAFобход, .
Официальный репозиторий на GitHub.
Oбход WAF с помощью WAFNinja
WAFNinja — это инструмент на Python, который помогает обходить WAF, автоматизируя шаги, необходимые для обхода проверки ввода. WAFNinja имеет множество полезных нагрузок и строк для фаззинга, хранящихся в локальном файле базы данных.
1 |
python wafninja.py fuzz -u "http://www.example.com/index.php?id=FUZZ" -c "phpsessid=value" -t xss -o output.html |
WAFNinja поддерживает HTTP-соединения, запросы GET и POST, а также использование куки для доступа к страницам, ограниченным аутентификацией. Также можно настроить перехватывающий прокси-сервер.
Официальный репозиторий на GitHub.
Заключение
Помимо этих инструментов, важно также иметь глубокое понимание того, как работает конкретный WAF, с которым вы будете иметь дело, и какие виды фильтрации и обнаружения он использует. Это позволит вам создавать более эффективные методики обхода.
Если вам, известны другие инструменты для определения и обхода WAF, то опишите их в комментариях.
ПОЛЕЗНЫЕ ССЫЛКИ: