WhatWaf
Описание WhatWaf
WhatWaf — это усовершенствованный инструмент обнаружения защиты веб приложений, цель которого — дать вам ответ на вопрос: «применяется ли на веб-сервере WAF и какой именно?». В процессе своей работы WhatWaf определяет наличие и вид файервола веб приложений и пытается обнаружить обход (или два) для указанного файервола на указанной цели.
Функции:
- Возможность запуска по одному URL-адресу с флагом -u/--url
- Возможность запускать по списку URL-адресов с флагом -l/--list
- Возможность обнаруживать более 70+ различных файерволов веб приложений
- Возможность опробовать более 30+ различных техник обхода
- Возможность передавать свои собственные полезные нагрузки из файла, с терминала или использовать полезные нагрузки по умолчанию.
- Полезные нагрузки по умолчанию, которые должны вызывать хотя бы один запуск WAF
- Возможность обхода файерволов с использованием как методов SQLi, так и методов межсайтового скриптинга.
- Возможность работать за любым типом прокси, который соответствует этому регулярному выражению: (socks\d+)?(http(s)?)?:// (socks5, socks4, http, https)
- Возможность использовать случайный пользовательский агент, персональный пользовательский агент или модифицированный пользовательский агент по умолчанию
- Автоматическое присвоение протокола HTTP или возможность принудительно установить протокол HTTPS
- Встроенный кодировщик, позволяющий кодировать полезные данные в обнаруженные обходные каналы
- Автоматическое создание обращения при обнаружении неизвестного файервола
- Возможность отправлять вывод в файл JSON, CSV или YAML
- Возможность кодировать предоставленные полезные нагрузки с помощью встроенных скриптов модификации
- Затем закодированные полезные нагрузки сохраняются в файл базы данных для использования в будущем
- Возможность экспортировать кэшированные полезные нагрузки из базы данных в YAML, JSON, CSV или текстовый файл.
- Возможность сохранять весь трафик в файлы для дальнейшего анализа, передав флаг --traffic
- Возможность попробовать определить внутренний веб-сервер, на котором размещено веб-приложение, с помощью -W
- Возможность отправлять запросы POST или GET
- Возможность передавать свои собственные пользовательские заголовки
- И прочее…
Список всех поддерживаемых для идентификации систем защиты веб приложений, WAF (всего 89):
- 360 Web Application Firewall (360)
- aeSecure (WAF)
- Airlock (Phion/Ergon)
- AkamaiGHost Website Protection (Akamai Global Host)
- Alert Logic (SIEMless Threat Management)
- AliYunDun (WAF)
- Anquanbao Web Application Firewall (Anquanbao)
- AnYu Web Application Firewall (Anyu Technologies)
- Apache Generic
- Armor Protection (Armor Defense)
- Application Security Manager (F5 Networks)
- ASP.NET Generic Website Protection (Microsoft)
- Apache Traffic Server (ATS web proxy)
- Amazon Web Services Web Application Firewall (Amazon)
- Yunjiasu Web Application Firewall (Baidu)
- Barikode Web Application Firewall
- Barracuda Web Application Firewall (Barracuda Networks)
- Bekchy (WAF)
- BIG-IP (F5 Networks)
- BinarySEC Web Application Firewall (BinarySEC)
- BitNinja (WAF)
- BlockDos DDoS protection (BlockDos)
- Chuangyu top government cloud defense platform (WAF)
- Cisco ACE XML Firewall (Cisco)
- CloudFlare Web Application Firewall (CloudFlare)
- CloudFront Firewall (Amazon)
- XSS/CSRF Filtering Protection (CodeIgniter)
- Comodo Web Application Firewall (Comodo)
- CSF (ConfigServer Security & Firewall)
- IBM Websphere DataPower Firewall (IBM)
- Deny All Web Application Firewall (DenyAll)
- DiDiYun WAF (DiDi)
- DoD Enterprise-Level Protection System (Department of Defense)
- DOSarrest (DOSarrest Internet Security)
- dotDefender (Applicure Technologies)
- DynamicWeb Injection Check (DynamicWeb)
- EdgeCast Web Application Firewall (Verizon)
- ExpressionEngine (Ellislab WAF)
- FortiWeb Web Application Firewall (Fortinet)
- Gladius network WAF (Gladius)
- Google Web Services (G-Cloud)
- Grey Wizard Protection
- Incapsula Web Application Firewall (Incapsula/Imperva)
- INFOSAFE by http://7i24.com
- Instart Logic (Palo Alto)
- Janusec Application Gateway (WAF)
- Jiasule (WAF)
- Litespeed webserver Generic Protection
- Malcare (MalCare Security WAF)
- Open Source Web Application Firewall (Modsecurity)
- Mod Security (OWASP CSR)
- NexusGuard Security (WAF)
- Nginx Generic Protection
- Palo Alto Firewall (Palo Alto Networks)
- Anti Bot Protection (PerimeterX)
- pkSecurityModule (IDS)
- Powerful Firewall (MyBB plugin)
- Radware (AppWall WAF)
- RSFirewall (Joomla WAF)
- Sabre Firewall (WAF)
- SafeDog WAF (SafeDog)
- SecuPress (WordPress WAF)
- Imperva SecureSphere (Imperva)
- Shadow Daemon Opensource (WAF)
- Shield Security
- Website Security SiteGuard (Lite)
- SonicWALL Firewall (Dell)
- Squid Proxy (IDS)
- Stackpath WAF (StackPath)
- Stingray Application Firewall (Riverbed/Brocade)
- StrictHttpFirewall (WAF)
- Sucuri Firewall (Sucuri Cloudproxy)
- Teros Web Application Firewall (Citrix)
- UEWaf (UCloud)
- UrlScan (Microsoft)
- Varnish/CacheWall WAF
- Viettel WAF (Cloudrity)
- Wallarm WAF
- WatchGuard WAF
- WebKnight Application Firewall (AQTRONIX)
- IBM Security Access Manager (WebSEAL)
- West236 Firewall
- Wordfence (Feedjit)
- WTS-WAF (Web Application Firewall)
- Xuanwudun WAF
- Yundun Web Application Firewall (Yundun)
- Yunsuo Web Application Firewall (Yunsuo)
- Zscaler Cloud Firewall (WAF)
GitHub: https://github.com/Ekultek/WhatWaf
Автор: Ekultek
Лицензия: GPLv3
Справка по WhatWaf
Использование:
./whatwaf -[u|l|b|g] ЗНАЧЕНИЕ|ПУТЬ|ПУТЬ|ПУТЬ [-p|--pl] ПОЛЕЗНАЯ_НАГРУЗКА,..|ПУТЬ [--args]
Опции:
опциональные аргументы: -h, --help показать справку и выйти обязательные аргументы: аргументы, которые необходимо передать чтобы программа заработала -u URL, --url URL Передать единичный URL для определения веб защиты -l ПУТЬ, --list ПУТЬ, -f ПУТЬ, --file ПУТЬ Передать файл, содержащий URL (один на строку) для определения веб защиты -b ПУТЬ_ДО_ФАЙЛА, --burp ПУТЬ_ДО_ФАЙЛА Передать файл с запросами Burp Suite для выполнения оценки WAF -g GOOGLER-JSON-ФАЙЛ, --googler GOOGLER-JSON-ФАЙЛ Передать файл JSON от инструмента командой строки Googler (например, googler -n 100 --json >> googler.json) аргументы запроса: аргументы, которые будут контролировать ваш запрос --pa USER-AGENT Укажите ваш собственный пользовательский агент для использования в HTTP запросах --ra Использовать случайный юзер-агент для HTTP запросов (*по умолчанию=whatwaf/2.0.3 (Language=2.7.18; Platform=Linux)) -H ЗАГОЛОВОК=ЗНАЧЕНИЕ,ЗАГОЛОВОК:ЗНАЧЕНИЕ.., --headers ЗАГОЛОВОК=ЗНАЧЕНИЕ,ЗАГОЛОВОК:ЗНАЧЕНИЕ.. Добавьте свои собственные пользовательские заголовки в запросы. Для использования нескольких, разделите заголовки запятыми. Ваши заголовки должны быть точными(например: Set-Cookie=a345ddsswe,X-Forwarded- For:127.0.0.1) (*по умолчанию=Ничего) --proxy ПРОКСИ Укажите используемый прокси в формате тип://адрес:порт (например, socks5://10.54.127.4:1080) (*по умолчанию=Ничего) --tor Использовать в качестве прокси Tor, Tor должен быть установлен и запущен (*по умолчанию=False) --check-tor Проверить ваше соединение Tor (по умолчанию=False) -p ПОЛЕЗНАЯ_НАГРУЗКА, --payloads ПОЛЕЗНАЯ_НАГРУЗКА Предоставить свою собственную полезную нагрузку, разделённую запятой, например, AND 1=1,AND 2=2 --pl ПОЛЕЗНАЯ_НАГРУЗКА_ПУТЬ_ДО_СПИСКА Указать файл, содержащий список полезных нагрузок в формате 1 на строку --force-ssl Принудительное назначение HTTPS вместо HTTP во время обработки (*по умолчанию=HTTP если другое не указано в URL) --throttle ВРЕМЯ-ПАУЗ (секунды) Указать время пауз между запросами (*по умолчанию=0) --timeout ТАЙМАУТ Контролирует время таймаута между запросами (*по умолчанию=15) -P, --post Отправить POST запрос (*по умолчанию=GET) -D СТРОКА-POST, --data СТРОКА-POST Отправить эти данные с запросом POST (*по умолчанию=random) -t ПОТОКИ, --threads ПОТОКИ Отправлять запросы параллельно (указывает количество потоков (*по умолчанию=1) -tP CONFIGTORPORT, --tor-port CONFIGTORPORT Изменяет порт, на котором работает Tor (*по умолчанию=9050) -T, --test Перед началом протестировать подключение к веб-сайту (*по умолчанию=True) опции кодирования: аргументы, которые контролируют кодирование полезных нагрузок -e PAYLOAD [TAMPER-SCRIPT-LOAD-PATH ...], --encode PAYLOAD [TAMPER-SCRIPT-LOAD-PATH ...] Кодировать предоставленную полезную нагрузку используя указанный скрипт(ы) tamper (модификатор) вы можете передать несколько путей для загрузки скриптов тампера и полезная нагрузка будет модифицирована по запросу -el PATH TAMPER-SCRIPT-LOAD-PATH, --encode-list PATH TAMPER-SCRIPT-LOAD-PATH Кодировать файл с полезными нагрузками (одна на строку) передав его путь и путь для загрузки скрипта тампера, файлы могут декодировать только с использованием единого пути загрузки скрипта тампера опции вывода: аргументы, которые контролируют, как WhatWaf обрабатывает вывод -F, --format Форматировать вывод в словарь и показать его -J, --json Отправить вывод в файл JSON -Y, --yaml Отправить вывод в файл YAML -C, --csv Отправить вывод в файл CSV --fingerprint Сохранить все отпечатки для последующих исследований --tamper-int INT Контролировать количество тамперов, которые отображаются (*по умолчанию=5) --traffic ИМЯ_ФАЙЛА Сохранить все заголовки HTTP трафика в файл по вашему выбору --force-file Принудительно создавать файл даже если защита не была идентифицирована -o ДИРЕКТОРИЯ, --output ДИРЕКТОРИЯ Сохранить копию файла в указанную директорию аргументы базы данных: аргументы, относящиеся к базе данных Whatwafs -c, --url-cache Перед запуска проверка URL которые уже были кэшированы в базе данных, это может сохранить время при сканировании множества целей (*по умолчанию=False) -uC, --view-url-cache Показать весь кэш URL внутри базы данных, в таблице будет показан адрес, скрипт тампера, веб-сервер и идентифицированная защита -pC, --payload-cache Показать все полезные нагрузки, которые были кэшированы внутри базы данных -vC, --view-cache Показать все кэши в базе данных, всё от URL до полезных нагрузок --export FILE-TYPE Экспортировать уже кодированные полезные нагрузки в указанный тип файла и сохранить их в домашней директории аргументы мастера: аргументы, связанные со встроенными скриптами прочие аргументы: аргументы, не попавшие ни в одну из категорий --verbose Запустить в вербальном режиме (больше вывода) --hide Спрятать банер во время запуска --update Обновить WhatWaf до самой новой версии --save ИМЯ_ФАЙЛА Сохранить закодированную полезную нагрузку в файл --skip Пропустить проверку обходов и просто идентифицировать файервол --verify-num INT Изменить количество запросов для верификации, что действительно ли отсутствует WAF (*по умолчанию=5) -W, --determine-webserver Попытка определить, какой веб-сервер запущен на хосте (например, Apache, Nginx и так далее. *по умолчанию=False) --wafs Вывод списка возможных файерволов, которые могут быть определены в WhatWaf --tampers Вывод списка путей загрузки скриптов тамперов с их описанием -M, --mine Передать флаг в mine XMR для вас и команды разработчиков whatwaf
Руководство по WhatWaf
Страница man отсутствует, но имеется описание аргументов.
Опциональные аргументы
Эти аргументы не очень важны, но их стоит упомянуть
-h/--help
Печать меню справки и выход. Это также будет выведено по умолчанию, если не переданы другие флаги.
Обязательные аргументы
Эти аргументы должны быть переданы для запуска whatwaf.
-u URL, --url URL
Передать один URL-адрес, чтобы обнаружить защиту
-l ПУТЬ, --list ПУТЬ, -f ПУТЬ, --file ПУТЬ
Передать файл, содержащий URL-адреса (по одному в каждой строке), чтобы обнаружить защиту
-b FILE-PATH, --burp FILE-PATH
Передать файл запроса Burp Suite для выполнения оценки WAF
Аргументы запроса
Эти аргументы управляют вашими HTTP-запросами вместе с вашими заголовками.
--pa
Передать персональный User-Agent в виде строки, чтобы заменить User-Agent по умолчанию. Вам решать, находится ли ваш User-Agent в правильном формате или нет.
--ra
Передача этого флага приведёт к извлечению случайного User-Agent из content/files/user_agents.txt, всего доступно 4195 User-Agent, из которых можно выбрать
--proxy
Передать прокси, чтобы работать через них. Whatwaf совместим с большинством типов прокси, такими как:
- socks5
- socks4
- http
- https
--tor
Передайте этот флаг, чтобы использовать Tor в качестве прокси. Имейте в виду, что для этого необходимо, чтобы в вашей системе был установлен и запущен Tor. Программа предположит, что Tor находится на порту 9050, и попытается подключиться к нему.
-p/--payloads
Предоставьте свои собственные полезные нагрузки для запросов для выявления. Полезные нагрузки должны быть разделены запятыми, например, -p="AND 1=1,OR 2=2".. Таким образом whatwaf сможет определить список по общему знаменателю.
--pl
Передать текстовый файл, содержащий полезные нагрузки (по одной в каждой строке), whatwaf перечислит эти полезные нагрузки и будет использовать каждую из них в запросах по обнаружению. Если вы собираетесь использовать этот метод, рекомендуется использовать прокси-сервер или proxychains.
--force-ssl
Передача этого флага заставит URL-адрес работать по протоколу HTTPS вместо HTTP.
Опции кодирования
Аргументы, управляющие кодировкой полезных нагрузок
-e PAYLOAD TAMPER-SCRIPT-LOAD-PATH, --encode PAYLOAD TAMPER-SCRIPT-LOAD-PATH
Кодировать предоставленную полезную нагрузку с помощью предоставленного скрипта вмешательства (тампера)
-el PATH TAMPER-SCRIPT-LOAD-PATH, --encode-list PATH TAMPER-SCRIPT-LOAD-PATH
Закодировать файл, содержащий полезные нагрузки (по одной на строку), передав путь до файла с ними и путь загрузки скрипта вмешательства (тампера)
Опции вывода
Аргументы, управляющие обработкой вывода WhatWaf
-F, --format
Отформатировать вывод в dict и отобразить его
-J, --json
Отправить вывод в файл JSON
-Y, --yaml
Отправить вывод в файл YAML
-C, --csv
Отправить вывод в файл CSV
Аргументы базы данных
Аргументы, относящиеся к базе данных WhatWafs
-c, --url-cache
Проверка URL-адресов перед их запуском по уже кэшированным в базе данных, это экономит время при сканировании множества целей (*по умолчанию=False)
-uC, --view-url-cache
Показ всех кэшированных URL внутри базы данных, включая сетевые адреса, скрипты вмешательства (тамперы), веб-сервер и идентифицированные средства защиты
-pC, --payload-cache
Просмотреть все полезные нагрузки, которые были кэшированы внутри базы данных
-vC, --view-cache
Просмотр всего кеша в базе данных, от URL до полезных нагрузок
--export ТИП_ФАЙЛА
Экспорт уже закодированных полезных нагрузок в указанный тип файла и сохранение его в домашнем каталоге.
Разные аргументы
Аргументы, которые особо не попадают ни в одну другую категорию
--verbose
Запустить в подробном режиме (больше вывода)
--hide
Скрыть баннер выводимый при запуске
--update
Обновите WhatWaf до последней разрабатываемой версии
--save ИМЯ_ФАЙЛА
Сохраните закодированные полезные нагрузки в файл
--skip
Пропустить проверку обходов и просто определить файервол
--verify-num ЧИСЛО
Измените количество запросов по умолчанию (5) на проверку, действительно ли WAF отсутствует.
Все доступные скрипты вмешательства (тамперы), всего 36:
--------------------------------------------------------------------------- Путь загрузки: | Описание: --------------------------------------------------------------------------- content.tampers.apostrephemask | скрытие апострофа с помощью UTF equivalent content.tampers.apostrephenullify | скрыть апостроф, передав его с символом NULL content.tampers.appendnull | добавление байта NULL в конец полезной нагрузки content.tampers.base64encode | кодирование полезной нагрузки в её base64 эквивалент content.tampers.booleanmask | маскировать логические значения их символическими аналогами content.tampers.doubleurlencode | двойное URL кодирование символов полезной нагрузки content.tampers.enclosebrackets | заключать числа в квадратные скобки content.tampers.escapequotes | экранирование кавычек с помощью косой слэшей content.tampers.lowercase | превращение полезной нагрузки в ее эквивалент в нижнем регистре content.tampers.maskenclosebrackets | заключение скобок и маскировка апострофа вокруг символа в скобках content.tampers.modsec | размещение полезной нагрузки между комментарием с запутыванием в нём content.tampers.modsecspace2comment | обфускация полезной нагрузки путём передачи её между комментариями с обфускацией и заменой пробелов на комментарии content.tampers.obfuscatebyhtmlcomment | обфускация тегов скрипта с HTML-комментариями content.tampers.obfuscatebyhtmlentity | изменение символов полезной нагрузки в их HTML-сущности content.tampers.obfuscatebyordinal | изменение определённых символов в полезной нагрузке на их порядковые эквиваленты content.tampers.prependnull | предварение символом NULL в начале полезной нагрузки content.tampers.randomcase | изменение регистра символов полезной нагрузки случайным образом с использованием верхнего или нижнего регистра content.tampers.randomcomments | внедрение случайных комментариев в полезную нагрузку content.tampers.randomdecoys | добавить в script теги-приманки content.tampers.randomjunkcharacters | добавление случайных мусорных символов в полезную нагрузку для обхода защиты на основе регулярных выражений content.tampers.randomtabify | замена пробелов в полезной нагрузке либо символом табуляции, либо восемью пробелами content.tampers.randomunicode | вставка случайных символов UTF-8 в полезную нагрузку content.tampers.randomwildcard | замена символов на подстановочные знаки content.tampers.space2comment | заменять пробелы в полезной нагрузке на комментарий content.tampers.space2doubledash | замена пробелов в полезной нагрузке на двойные тире content.tampers.space2hash | изменение пространств полезной нагрузки на обфусцированные хеши с новой строкой content.tampers.space2multicomment | изменить пробелы полезной нагрузки на случайное количество пробелов, скрытых комментарием content.tampers.space2null | изменение пробелов в полезной нагрузке на символ NULL content.tampers.space2plus | изменение пробелов в полезной нагрузке на знак плюса content.tampers.space2randomblank | изменение пробелов полезной нагрузки на случайные пустые символы ASCII content.tampers.tabifyspacecommon | замена пробелов полезной нагрузки на символ табуляции (\t) content.tampers.tabifyspaceuncommon | замена пробелов в полезной нагрузке на 8 пробелов для имитации символа табуляции content.tampers.tripleurlencode | тройное URL кодирование символов полезной нагрузки content.tampers.uppercase | изменение полезной нагрузки на её эквивалент в верхнем регистре content.tampers.urlencode | кодирование знаков препинания их эквивалентом в кодировке URL content.tampers.urlencodeall | кодирование всех символов в полезной нагрузке в их эквивалент в кодировке URL ---------------------------------------------------------------------------
Примеры запуска WhatWaf
Выполнить идентификацию файервола веб приложения и найти способы обхода для сайта apple.com (-u https://apple.com):
python3 ./whatwaf -u https://apple.com
Выполнить идентификацию файервола веб приложения и найти способы обхода для указанного сайта (-u https://wise.com) используя в качестве прокси-сервера сеть Tor (--tor):
sudo systemctl start tor python3 ./whatwaf -u https://wise.com --tor
Определить защиту веб приложения указанного сайта (-u https://www.ebay.com), попытаться определить тип веб-сервера (-W), для запросов использовать указанный User Agent (--pa 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36'):
python3 ./whatwaf -u https://www.ebay.com -W --pa 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36'
Установка WhatWaf
Установка в Kali Linux
sudo apt install python3-pip git clone https://github.com/ekultek/whatwaf cd whatwaf sudo pip3 install -r requirements.txt
При запуске можно указывать исполнительный файл без версии Python:
./whatwaf --help
Но рекомендуется явно указывать версию Python, поскольку мы не устанавливали зависимости для Python 2:
python3 ./whatwaf --help
Установка в BlackArch
Программа предустановлена в BlackArch.
Для установки в минимальные сборки выполните:
sudo pacman -S whatwaf
Установка в Debian, Linux Mint, Ubuntu
sudo apt update sudo apt install git python3-pip git clone https://github.com/ekultek/whatwaf cd whatwaf sudo pip3 install -r requirements.txt
При запуске не обязательно указывать версию Python:
./whatwaf --help
Но рекомендуется явно указывать версию Python, поскольку мы не устанавливали зависимости для Python 2:
python3 ./whatwaf --help
Информация об установке в другие операционные системы будет добавлена позже.
Comments are Closed