==============================================
Wapiti — сканер уязвимостей веб-приложений
.. image:: https://img.shields.io/pypi/v/wapiti3?label=PyPI&logo=PyPI&logoColor=white&color=blue
:alt: PyPI version
:target: https://pypi.python.org/pypi/wapiti3
.. image:: https://img.shields.io/pypi/pyversions/wapiti3
:alt: Supported Python versions
:target: https://github.com/wapiti-scanner/wapiti/blob/master/INSTALL.md
.. image:: https://img.shields.io/github/license/wapiti-scanner/wapiti
:alt: License: GPL-2.0
:target: https://github.com/wapiti-scanner/wapiti/blob/master/LICENSE
.. image:: https://img.shields.io/pypi/dd/wapiti3
:alt: Downloads per day on PyPi
:target: https://pypi.python.org/pypi/wapiti3
.. image:: https://codecov.io/gh/wapiti-scanner/wapiti/branch/master/graph/badge.svg?token=GFEIORAFB8
:target: https://codecov.io/gh/wapiti-scanner/wapiti
Wapiti — это сканер уязвимостей веб-приложений, написанный на Python.
http://wapiti-scanner.github.io/
Требования
Для корректной работы 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)
- Базовое обнаружение межсайтовой подделки запросов (CSRF)
- Идентификация веб-приложений с использованием базы данных 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-уязвимости.
Имена модулей
Вышеупомянутые атаки привязаны к следующим именам модулей: