В прошлом небольшом обзоре я писал о сканере на основе Nikto с уже собраным файлом fuzz.txt Сегодня я расскажу непосредственно о самом fuzzer'е. Иными словами - тестирование на проникновение. И так, Wapiti. Работает из под Linux'а, соответственно является консольным сканером веб-приложений, который в своей основе несет принцип 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, поэтому команда старта будет выглядеть таким образом: Код: python wapiti.py http://server.com/base/url/ [options] Wapiti имеет довольно подробную справку, с огромным количеством опций запуска. Пример: Код: wapiti http://example.com/about -u -b page -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 уязвимостей вы можете использовать следующие параметры: Код: wapiti http://example.com/about -u -n 5 -b domain -m "-all,sql,blindsql" -v 2 -o /tmp/outfile.html Таким образом вы сначала выключите все модули, а затем включите 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 в действии: Код: wapiti http://locks.su/test/test_full_search.asp -u -n 5 -b page -v 2 Происходит распознавание GET и POST методов, а затем загрузка модулей. Дальше Wapiti по очереди использует каждый из модулей для поиска уязвимостей. После загрузки XSS модуля была найдены уязвимость в параметре ThatSearch, подробно описав информацию о POST запросе. После полного сканирования Wapiti сформировал отчет в формате HTML, который очень удобен для просмотра. Подробный отчет о каждой из уязвимостей выглядит таким образом: Таким образом, Wapiti имеет огромное количество плюсов в своей копилке: Широкий спектр знаний уязвимостей Обход Cookies и CSRF токенов Полная справка с множеством флагов Возможность работы вместе с Metaslpoit Использование базы данных Nikto для поиска потенциально опасных файлов Высокая скорость работы Подробные отчеты Из минусов - последнее обновление было в 2013 году.