Для корректной работы Wapiti требуется Python 3.12, 3.13 или 3.14.
Все зависимости Python-модулей будут установлены автоматически, если вы используете скрипт setup.py или pip install wapiti3
Подробнее об установке см. в INSTALL.md <https://github.com/wapiti-scanner/wapiti/blob/master/INSTALL.md>__.
Запуск Wapiti на Windows можно осуществить с помощью WSL <https://learn.microsoft.com/en-us/training/modules/get-started-with-windows-subsystem-for-linux/>__.
Как это работает
Wapiti работает как сканер уязвимостей «чёрного ящика» (black-box), то есть он не изучает исходный код веб-приложений, а действует как фаззер: сканирует страницы развёрнутого веб-приложения, извлекает ссылки и формы, атакует скрипты, отправляет полезные нагрузки (payloads) и ищет сообщения об ошибках, особые строки или аномальное поведение.
Общие возможности
Формирует отчёты об уязвимостях в различных форматах (HTML, XML, JSON, TXT, CSV, Markdown).
Может приостанавливать и возобновлять сканирование или атаку (механизм сессий на основе баз данных sqlite3).
Может выводить цвета в терминале для подсветки уязвимостей.
Различные уровни подробности вывода.
Быстрый и простой способ включения/отключения модулей атак.
Добавление полезной нагрузки может быть таким же простым, как добавление строки в текстовый файл.
Настраиваемое количество параллельных задач для выполнения HTTP-запросов.
Возможности обхода
Поддержка прокси HTTP, HTTPS и SOCKS5.
HTTP-аутентификация на цели (Basic, Digest, NTLM)
Аутентификация путём заполнения форм входа.
Возможность ограничить область сканирования (домен, папка, страница, URL).
Автоматическое удаление одного или нескольких параметров в URL.
Множественные защиты от бесконечных циклов сканирования (например, ограничение количества значений параметра).
Возможность задать первые URL для обхода (даже если они вне области сканирования).
Может исключать некоторые URL из сканирования и атак (например, URL выхода из системы).
Импорт куки-файлов из браузера Chrome или Firefox или с помощью инструмента wapiti-getcookie.
Может включать/отключать проверку SSL-сертификатов.
Пытается извлекать URL из JavaScript (очень простой интерпретатор JS).
Поддерживает HTML5 (понимает современные HTML-теги).
Несколько опций для управления поведением и ограничениями краулера.
Пропуск некоторых имён параметров во время атаки.
Установка максимального времени для процесса сканирования.
Добавление пользовательских HTTP-заголовков или установка собственного User-Agent.
Использование безголового браузера Firefox для обхода.
Загрузка собственного Python-кода для сложных случаев аутентификации (см. опцию --form-script)
Добавление пользовательского URL или PATH для обновления базы данных Wappalyzer
Сканирование REST API на основе файла OpenAPI (swagger)
Поддерживаемые атаки
SQL-инъекции (на основе ошибок, логические, временные) и XPath-инъекции
LDAP-инъекции (на основе ошибок и логические)
Отражённый и постоянный межсайтовый скриптинг (XSS)
Обнаружение раскрытия файлов (локальное и удалённое включение, require, fopen, readfile...)
Обнаружение выполнения команд (eval(), system(), passtru()...)
XXE-инъекции (внешние XML-сущности)
CRLF-инъекции
Поиск потенциально опасных файлов на сервере (благодаря базе данных Nikto)
Обход слабых конфигураций htaccess
Поиск копий (резервных копий) скриптов на сервере
Shellshock
Перебор папок и файлов (по типу DirBuster)
Подделка серверных запросов (Server Side Request Forgery) (с использованием внешнего сайта Wapiti)
Открытые перенаправления (Open Redirects)
Обнаружение нестандартных HTTP-методов (например, PUT)
Базовый оценщик CSP
Перебор формы входа (по словарю)
Проверка заголовков безопасности HTTP
Проверка флагов безопасности куки (флаги secure и httponly)
Идентификация веб-приложений с использованием базы данных Wappalyzer, предоставляет информацию о соответствующих CVE
Перебор модулей CMS для Wordpress, Drupal, Joomla, Magento, SPIP, Typo3 и т. д.
Обнаружение захвата поддоменов
Обнаружение Log4Shell (CVE-2021-44228)
Обнаружение Spring4Shell (CVE-2022-22965)
Проверка HTTPS-перенаправлений
Проверка уязвимостей загрузки файлов
Обнаружение сетевых устройств
Инъекция полезных нагрузок также и в JSON-тело
Wapiti поддерживает для атак как GET, так и POST HTTP-методы.
Он также поддерживает multipart и может внедрять полезные нагрузки в имена файлов (при загрузке).
Выводит предупреждение при обнаружении аномалии (например, при ошибках 500 и тайм-аутах).
Различает постоянные и отражённые XSS-уязвимости.
Имена модулей
Вышеупомянутые атаки привязаны к следующим именам модулей:
backup (поиск копий скриптов и архивов на веб-сервере)
brute_login_form (перебор формы входа по словарю)
buster (модуль, подобный DirBuster)
cms (сканирование для обнаружения CMS и их версий)
cookieflags (проверка флагов Secure и HttpOnly)
crlf (инъекция CR-LF в HTTP-заголовки)
csp (обнаружение отсутствия CSP или слабой конфигурации CSP)
csrf (обнаружение форм, не защищённых от CSRF или использующих слабые анти-CSRF токены)
Создавать или улучшать генераторы отчётов и шаблоны
Отправлять исправления ошибок, патчи...
Писать графические интерфейсы (GUI)
Создать инструмент для преобразования PCAP-файлов в файлы сессий Wapiti sqlite3
Рассказывать о Wapiti окружающим
Лицензирование
Wapiti распространяется под лицензией GNU General Public License версии 2 (GPL).
Исходный код доступен на Github <https://github.com/wapiti-scanner/wapiti>__.
Wapiti — это программное обеспечение в области кибербезопасности. Оно выполняет оценку безопасности указанной цели, что может привести к сбоям и зависаниям на цели, а также к потенциальной потере данных.
Использование Wapiti для атаки на цель без предварительного согласия её владельца незаконно. Ответственность за соблюдение всех применимых местных законов лежит на конечном пользователе.
Разработчики и участники проекта Wapiti не несут ответственности и не отвечают за любое неправомерное использование или ущерб, причинённый этой программой.