Wapiti - Scanner de Vulnerabilidades Web
.. 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 é um scanner de vulnerabilidades web escrito em Python.
http://wapiti-scanner.github.io/
Requisitos
Para funcionar corretamente, o Wapiti precisa do Python 3.12, 3.13 ou 3.14.
Todas as dependências de módulos Python serão instaladas automaticamente se você usar o script setup.py ou pip install wapiti3
Consulte INSTALL.md <https://github.com/wapiti-scanner/wapiti/blob/master/INSTALL.md>__ para mais detalhes sobre a instalação.
A execução do Wapiti no Windows pode ser feita por meio do uso de WSL <https://learn.microsoft.com/en-us/training/modules/get-started-with-windows-subsystem-for-linux/>__.
Como funciona
Wapiti funciona como um scanner de vulnerabilidades "caixa-preta", ou seja, ele não
estuda o código-fonte dos aplicativos web, mas funciona como um fuzzer,
varrendo as páginas do aplicativo web implantado, extraindo links e
formulários e atacando os scripts, enviando payloads e procurando mensagens de erro,
strings especiais ou comportamentos anormais.
Recursos gerais
- Gera relatórios de vulnerabilidades em vários formatos (HTML, XML, JSON, TXT, CSV, Markdown).
- Pode suspender e retomar uma varredura ou um ataque (mecanismo de sessão usando bancos de dados sqlite3).
- Pode dar cores no terminal para destacar vulnerabilidades.
- Diferentes níveis de verbosidade.
- Maneira rápida e fácil de ativar/desativar módulos de ataque.
- Adicionar um payload pode ser tão fácil quanto adicionar uma linha a um arquivo de texto.
- Número configurável de tarefas concorrentes para realizar requisições HTTP.
Recursos de navegação
- Suporte a proxies HTTP, HTTPS e SOCKS5.
- Autenticação HTTP no alvo (Basic, Digest, NTLM)
- Autenticação por preenchimento de formulários de login.
- Capacidade de restringir o escopo da varredura (domínio, pasta, página, url).
- Remoção automática de um ou mais parâmetros em URLs.
- Múltiplas proteções contra loops infinitos na varredura (por exemplo, limite de valores para um parâmetro).
- Possibilidade de definir as primeiras URLs a explorar (mesmo que fora do escopo).
- Pode excluir algumas URLs da varredura e dos ataques (ex: URL de logout).
- Importar cookies do seu navegador Chrome ou Firefox ou usando a ferramenta
wapiti-getcookie.
- Pode ativar / desativar a verificação de certificados SSL.
- Tenta extrair URLs de javascript (interpretador JS muito básico).
- Ciente de HTML5 (entende tags HTML recentes).
- Várias opções para controlar o comportamento e os limites do rastreador.
- Ignorar alguns nomes de parâmetros durante o ataque.
- Definir um tempo máximo para o processo de varredura.
- Adicionar alguns cabeçalhos HTTP personalizados ou definir um User-Agent personalizado.
- Usar um navegador Firefox headless para rastreamento
- Carregar seu próprio código python para casos de autenticação complicados (veja a opção
--form-script)
- Adicionar URL ou PATH personalizados para atualizar o banco de dados Wappalyzer
- Varredura de APIs REST fornecidas em um arquivo OpenAPI (swagger)
Ataques suportados
- Injeções SQL (baseadas em erro, booleanas, baseadas em tempo) e Injeções XPath
- Injeções LDAP (baseadas em erro e booleanas)
- Cross Site Scripting (XSS) refletido e permanente
- Detecção de divulgação de arquivos (include local e remoto, require, fopen, readfile...)
- Detecção de execução de comandos (eval(), system(), passtru()...)
- Injeção XXE (Xml eXternal Entity)
- Injeção CRLF
- Procura por arquivos potencialmente perigosos no servidor (graças ao banco de dados Nikto)
- Bypass de configurações htaccess fracas
- Procura por cópias (backup) de scripts no servidor
- Shellshock
- Enumeração de pastas e arquivos (como DirBuster)
- Server Side Request Forgery (por meio do uso de um site Wapiti externo)
- Redirecionamentos abertos
- Detecção de métodos HTTP incomuns (como PUT)
- Avaliador básico de CSP
- Formulário de login por força bruta (usando uma lista de dicionário)
- Verificação de cabeçalhos de segurança HTTP
- Verificação de flags de segurança de cookies (flags secure e httponly)
- Detecção básica de Cross Site Request Forgery (CSRF)
- Fingerprinting de aplicativos web usando o banco de dados Wappalyzer, fornece informações relacionadas de CVE
- Enumeração de módulos CMS para Wordpress, Drupal, Joomla, Magento, SPIP, Typo3, etc
- Detecção de takeover de subdomínios
- Detecção de Log4Shell (CVE-2021-44228)
- Detecção de Spring4Shell (CVE-2022-22965)
- Verificação de redirecionamentos https
- Verificação de vulnerabilidades de upload de arquivos
- Detecção de dispositivos de rede
- Também injeta payloads no corpo JSON
Wapiti suporta ambos os métodos HTTP GET e POST para ataques.
Ele também suporta multipart e pode injetar payloads em nomes de arquivos (upload).
Exibe um aviso quando uma anomalia é encontrada (por exemplo, erros 500 e timeouts)
Faz a diferença entre vulnerabilidades XSS permanentes e refletidas.
Nomes dos módulos
Os ataques mencionados estão vinculados aos seguintes nomes de módulos: