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:
backup (Procura cópias de scripts e arquivos no servidor web)
brute_login_form (Formulário de login por força bruta usando uma lista de dicionário)
buster (Módulo similar ao DirBuster)
cms (Varredura para detectar CMS e suas versões)
cookieflags (Verifica as flags Secure e HttpOnly)
crlf (Injeção CR-LF em cabeçalhos HTTP)
csp (Detecta falta de CSP ou configuração CSP fraca)
csrf (Detecta formulários não protegidos contra CSRF ou que usam tokens anti-CSRF fracos)
exec (Execução de código ou injeção de comandos)
file (Path traversal, inclusão de arquivos, etc)
htaccess (Restrições htaccess mal configuradas)
htp (Identifica tecnologias web usando o banco de dados HashThePlanet)
http_headers (Verifica cabeçalhos de segurança HTTP)
https_redirect (Verifica redirecionamentos https)
ldap (Detecção de injeção LDAP baseada em erro e booleana)
log4shell (Detecta sites vulneráveis ao CVE-2021-44228)
methods (Procura métodos HTTP disponíveis incomuns, como PUT)
network_device (Procura arquivos comuns para detectar dispositivos de rede)
nikto (Procura vulnerabilidades conhecidas testando a existência de URLs e verificando respostas)
permanentxss (Nova varredura de todo o alvo após a execução do módulo xss procurando payloads previamente contaminados)
printer (Detecta impressoras de rede, obtém informações de modelo e firmware)
redirect (Redirecionamentos abertos)
shellshock (Testa o ataque Shellshock, veja Wikipedia <https://en.wikipedia.org/wiki/Shellshock_%28software_bug%29>__)
spring4shell (Detecta sites vulneráveis ao CVE-2020-5398)
sql (Detecção de injeção SQL baseada em erro e booleana)
ssl (Avalia a segurança da configuração de certificados SSL/TLS, requer sslscan <https://github.com/rbsec/sslscan>__)
ssrf (Server Side Request Forgery)
takeover (Takeover de subdomínio)
timesql (Vulnerabilidades de injeção SQL detectadas com metodologia baseada em tempo)
upload (Vulnerabilidades de upload de arquivos)
wapp (Não é um módulo de ataque, obtém tecnologias web com versões e categorias em uso no alvo, encontra CVEs correspondentes)
wp_enum (Enumera plugins e temas em um site Wordpress)
xss (Módulo de injeção XSS)
xxe (Ataque XML External Entity)
Os nomes dos módulos podem ser fornecidos como uma lista separada por vírgulas usando a opção "-m" ou "--module".
Como obter os melhores resultados
Para encontrar mais vulnerabilidades (já que alguns ataques são baseados em erro), você pode modificar
as configurações do seu servidor web.
Por exemplo, você pode definir os seguintes valores na sua configuração PHP:
.. code-block::
root@kitploit:~
safe_mode = Off
display_errors = On (recommended)
magic_quotes_gpc = Off
allow_url_fopen = On
mysql.trace_mode = On
Onde obter ajuda
No prompt, basta digitar o seguinte comando para obter o uso básico:
root@kitploit:~
wapiti -h
Você também pode dar uma olhada na manpage (wapiti.1 ou wapiti.1.html) para mais detalhes sobre cada opção.
Criar ou melhorar geradores de relatórios e modelos
Enviar correções de bugs, patches...
Escrever algumas GUIs
Criar uma ferramenta para converter arquivos PCAP em arquivos de sessão sqlite3 do Wapiti
Falar sobre o Wapiti para as pessoas ao seu redor
Licenciamento
Wapiti é distribuído sob a GNU General Public License versão 2 (GPL).
O código-fonte está disponível no Github <https://github.com/wapiti-scanner/wapiti>__.
Wapiti é um software de cibersegurança. Ele realiza avaliações de segurança em um alvo fornecido, o que pode levar a mau funcionamento e travamentos no alvo, bem como possível perda de dados.
O uso do Wapiti para atacar um alvo sem o consentimento prévio de seu proprietário é ilegal. É responsabilidade do usuário final obedecer todas as leis locais aplicáveis.
Os desenvolvedores e as pessoas envolvidas no projeto Wapiti não assumem nenhuma responsabilidade e não são responsáveis por qualquer uso indevido ou dano causado por este programa.