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

Информация об установке в другие операционные системы будет добавлена позже.

Скриншоты WhatWaf

Инструкции по WhatWaf


Близкие программы:

  • identYwaf (100%)
  • WAFW00F (100%)
  • DIRB (52.7%)
  • DirBuster (52.7%)
  • Recon-ng (52.7%)
  • ident-user-enum (RANDOM - 1%)
  • Рекомендуется Вам:

    Comments are Closed