Wapiti является консольным сканером веб-приложений, который в своей основе несет принцип BlackBox тестирования (анализируются не исходники приложения, а ответы сервера на запросы с измененными параметрами).  Утилита сначала анализирует структуру сайта, ищет доступные сценарии, анализирует параметры, а затем включает свой фаззер.

Wapiti работает со следующими типами уязвимостей:

  • File disclosure (Local and remote include/require, fopen, readfile…)
  • Database Injection (PHP/JSP/ASP SQL Injections and XPath Injections)
  • XSS (Cross Site Scripting) injection (reflected and permanent)
  • Command Execution detection (eval(), system(), passtru()…)
  • CRLF Injection (HTTP Response Splitting, session fixation…)
  • XXE (XmleXternal Entity) injection
  • Use of know potentially dangerous files
  • Weak .htaccess configurations that can be bypassed
  • Presence of backup files giving sensitive information (source code disclosure)

Wapiti входит в состав утилит дистрибутива Kali Linux,. Можно скачать исходники с SourceForge и использовать на любом дистрибутиве основанном на ядре Linux. Wapiti поддерживает GET и POST HTTP методы запросов.

Утилита написана на Python, поэтому команда старта будет выглядеть таким образом:

Wapiti имеет довольно подробную справку, с огромным количеством опций запуска.

Пример:

Подробнее о опциях запуска в данном примере:

-u — цветовая подсветка

-b page — анализ только страницы полученной в URL

-v 2 — вывод всех аттак

-o — создание отчета по адресу /home/pentest/outfile.html

Wapiti построен на модулях, которые подключаются при сканирование — backup, blindsql, crlf, exec, file, htaccess, nikto, permanentxss, sql, xss, buster, shellshock.

Вы можете исключить определенные модули при сканирование при помощи флага -m, а также выключить все модули при помощи -m “-all”.  Для сканирования только sql и blindsql уязвимостей вы можете использовать следующие параметры:

Таким образом вы сначала выключите все модули, а затем включите sql и blindsql модули.

Также можно выбрать формат вывода отчета сканирования — json, html, openvas, txt, vulneranet, xml. На мой взгляд наиболее удобно читать отчет в формате html, пример вы сможете увидеть в конце статьи.

Большинство web-приложений использует CSRF токены и cookies. Вы можете пропустить cookies аутентификации в Wapiti при помощи флага -c, —cookies.

Наиболее интересная функция Wapiti является возможно импорта результата сканирования в базу данных Metasploit. Для этого нужно сохранить отчет в формате XML при помощи флага -f xml, затем импортировать этот xml в metasploit. Внутри msfconsole нужно выполнить следующую команду db_import /tmp/outfile.xml.

В результате отчет со всеми уязвимостями будет импортирован в Metasploit.

От небольшого теоретического введения перейдем к практике:

Попробуем сканировать заведомо уязвимый сайт и посмотреть, как выглядит Wapiti в действие.

image03

Происходит распознавание GET и POST методов, а затем загрузка модулей. Дальше Wapiti по очереди использует каждый из модулей для поиска уязвимостей.

image02

После загрузки XSS модуля была найдены уязвимость в параметре ThatSearch, подробно описав информацию о POST запросе.

image00

После полного сканирования Wapiti сформировал отчет в формате HTML, который очень удобен для просмотра.

image01

Подробный отчет о каждой из уязвимостей выглядит таким образом:

image04

Таким образом, Wapiti имеет огромное количество плюсов в своей копилке:

  • Широкий спектр знаний уязвимостей
  • Обход Cookies и CSRF токенов
  • Полная справка с множеством флагов
  • Возможность работы вместе с Metaslpoit
  • Использование базы данных Nikto для поиска потенциально опасных файлов
  • Высокая скорость работы
  • Подробные отчеты