==============================================
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-уязвимости.
Имена модулей
Вышеупомянутые атаки привязаны к следующим именам модулей:
- backup (поиск копий скриптов и архивов на веб-сервере)
- brute_login_form (перебор формы входа по словарю)
- buster (модуль, подобный DirBuster)
- cms (сканирование для обнаружения CMS и их версий)
- cookieflags (проверка флагов Secure и HttpOnly)
- crlf (инъекция CR-LF в HTTP-заголовки)
- csp (обнаружение отсутствия CSP или слабой конфигурации CSP)
- csrf (обнаружение форм, не защищённых от CSRF или использующих слабые анти-CSRF токены)
- exec (выполнение кода или инъекция команд)
- file (обход пути, включение файлов и т. д.)
- htaccess (неправильно настроенные ограничения htaccess)
- htp (определение веб-технологий по базе данных HashThePlanet)
- http_headers (проверка заголовков безопасности HTTP)
- https_redirect (проверка HTTPS-перенаправлений)
- ldap (обнаружение LDAP-инъекций на основе ошибок и логических условий)
- log4shell (обнаружение сайтов, уязвимых к CVE-2021-44228)
- methods (поиск нестандартных доступных HTTP-методов, например PUT)
- network_device (поиск типовых файлов для обнаружения сетевых устройств)
- nikto (поиск известных уязвимостей путём проверки существования URL и анализа ответов)
- permanentxss (повторное сканирование всей цели после выполнения модуля xss в поисках ранее внедрённых полезных нагрузок)
- printer (обнаружение сетевых принтеров, получение информации о модели и прошивке)
- redirect (открытые перенаправления)
- shellshock (тестирование атаки Shellshock, см.
Wikipedia <https://en.wikipedia.org/wiki/Shellshock_%28software_bug%29>__)
- spring4shell (обнаружение сайтов, уязвимых к CVE-2020-5398)
- sql (обнаружение SQL-инъекций на основе ошибок и логических условий)
- ssl (оценка безопасности конфигурации SSL/TLS-сертификатов, требуется
sslscan <https://github.com/rbsec/sslscan>__)
- ssrf (подделка серверных запросов)
- takeover (захват поддомена)
- timesql (SQL-инъекции, обнаруживаемые с помощью временной методологии)
- upload (уязвимости загрузки файлов)
- wapp (не модуль атаки; определяет используемые на цели веб-технологии с версиями и категориями, находит соответствующие CVE)
- wp_enum (перебор плагинов и тем на сайте Wordpress)
Имена модулей можно указывать списком через запятую с помощью опции "-m" или "--module".
Как получить наилучшие результаты
Чтобы находить больше уязвимостей (поскольку некоторые атаки основаны на ошибках), вы можете изменить конфигурацию вашего веб-сервера.
Например, вы можете задать следующие значения в конфигурации PHP:
.. code-block::
safe_mode = Off
display_errors = On (recommended)
magic_quotes_gpc = Off
allow_url_fopen = On
mysql.trace_mode = On
Где получить помощь
В командной строке просто введите следующую команду, чтобы получить базовую информацию об использовании:
Вы также можете ознакомиться с man-страницей (wapiti.1 или wapiti.1.html), чтобы получить более подробную информацию о каждой опции.
У нас также есть официальная вики, которая более подробна: https://github.com/wapiti-scanner/wapiti/wiki
Если у вас есть другой вопрос, сначала загляните в FAQ <https://github.com/wapiti-scanner/wapiti/blob/master/doc/FAQ.md>__
Если вы нашли ошибку, создайте issue: https://github.com/wapiti-scanner/wapiti/issues
Как помочь проекту Wapiti
Вы можете:
- Поддержать проект пожертвованием ( http://sf.net/donate/index.php?group_id=168625 )
- Создавать или улучшать модули атак
- Создавать или улучшать генераторы отчётов и шаблоны
- Отправлять исправления ошибок, патчи...
- Писать графические интерфейсы (GUI)
- Создать инструмент для преобразования PCAP-файлов в файлы сессий Wapiti sqlite3
- Рассказывать о Wapiti окружающим
Лицензирование
Wapiti распространяется под лицензией GNU General Public License версии 2 (GPL).
Исходный код доступен на Github <https://github.com/wapiti-scanner/wapiti>__.
Автор: Nicolas SURRIBAS.
Спонсоры
Cyberwatch https://cyberwatch.com/
Security For Everyone https://securityforeveryone.com/
IP-Nina https://ip-ninja.com/
Отказ от ответственности
Wapiti — это программное обеспечение в области кибербезопасности. Оно выполняет оценку безопасности указанной цели, что может привести к сбоям и зависаниям на цели, а также к потенциальной потере данных.
Использование Wapiti для атаки на цель без предварительного согласия её владельца незаконно. Ответственность за соблюдение всех применимых местных законов лежит на конечном пользователе.
Разработчики и участники проекта Wapiti не несут ответственности и не отвечают за любое неправомерное использование или ущерб, причинённый этой программой.