Wapiti - Verificador de vulnerabilidades da Web
Wapiti é um scanner de vulnerabilidades da web escrito em Python.
http://wapiti-scanner.github.io/
Requisitos
Para funcionar corretamente, o Wapiti precisa do Python 3.10 ou 3.11
Todas as dependências do módulo Python serão instaladas automaticamente se você usar o script setup.py ou pip install wapiti3
Consulte INSTALL.md para obter mais detalhes sobre a instalação.
A execução do Wapiti no Windows pode ser realizada por meio do uso de WSL.
Como funciona
O Wapiti funciona como um scanner de vulnerabilidades de "caixa preta", o que significa que não estudará o código-fonte das aplicações web, mas funcionará como um fuzzer, escaneando as páginas da aplicação web implantada, extraindo links e formulários e atacando os scripts, enviando cargas úteis e procurando mensagens de erro, strings especiais ou comportamentos anormais.
Recursos gerais
- Gera relatórios de vulnerabilidade em diversos formatos (HTML, XML, JSON, TXT, CSV).
- Pode suspender e retomar uma varredura ou ataque (mecanismo de sessão usando bancos de dados sqlite3).
- Pode fornecer 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 uma carga útil pode ser tão fácil quanto adicionar uma linha a um arquivo de texto.
- Número configurável de tarefas simultâneas para realizar solicitações HTTP.
Recursos de navegação
- Suporta proxies HTTP, HTTPS e SOCKS5.
- Autenticação HTTP no destino (Basic, Digest, NTLM)
- Autenticação preenchendo formulários de login.
- Capacidade de restringir o escopo da verificação (domínio, pasta, página, URL).
- Remoção automática de um ou mais parâmetros em URLs.
- Múltiplas salvaguardas contra loops infinitos de varredura (por exemplo, limite de valores para um parâmetro).
- Possibilidade de definir as primeiras URLs a explorar (mesmo que não estejam no escopo).
- Pode excluir alguns URLs de varredura e ataques (por exemplo: URL de logout).
- Importe cookies do seu navegador Chrome ou Firefox ou usando a ferramenta wapiti-getcookie.
- Pode ativar/desativar a verificação de certificados SSL.
- Extraia URLs de arquivos Flash SWF.
- Tente extrair URLs de javascript (interpretador JS muito básico).
- Compatível com HTML5 (entenda as tags HTML recentes).
- Várias opções para controlar o comportamento e os limites do rastreador.
- Ignorando alguns nomes de parâmetros durante o ataque.
- Definir um tempo máximo para o processo de digitalização.
- Adicionar alguns cabeçalhos HTTP personalizados ou definir um User-Agent personalizado.
- Usando um navegador Firefox headless para rastreamento
- Carregando seu próprio código python para casos de autenticação complicados (consulte a opção --form-script)
- Adicionando URL ou PATH personalizado para atualizar o banco de dados Wappalyzer
- Digitalize APIs REST com um arquivo OpenAPI (swagger)
Ataques suportados
- Injeções SQL (baseadas em erros, baseadas em booleanos, baseadas em tempo) e injeções XPath
- Injeções LDAP (baseadas em erros e booleanas)
- Cross Site Scripting (XSS) refletido e permanente
- Detecção de divulgação de arquivos (local e remoto include, require, fopen, readfile...)
- Detecção de execução de comando (eval(), system(), passtru()...)
- Injeção XXE (Xml eXternal Entity)
- Injeção CRLF
- Procure por arquivos potencialmente perigosos no servidor (graças ao banco de dados Nikto)
- Ignorar configurações fracas de htaccess
- Procure cópias (backup) de scripts no servidor
- Choque de concha
- Enumeração de pastas e arquivos (como DirBuster)
- Falsificação de solicitação no lado do servidor (através do uso de um site externo do Wapiti)
- Redirecionamentos abertos
- Detecção de métodos HTTP incomuns (como PUT)
- Avaliador CSP Básico
- Formulário de login de força bruta (usando uma lista de dicionário)
- Verificando cabeçalhos de segurança HTTP
- Verificando sinalizadores de segurança de cookies (sinalizadores seguros e httponly)
- Detecção básica de falsificação de solicitação entre sites (CSRF)
- A impressão digital de aplicativos da web usando o banco de dados Wappalyzer fornece informações CVE relacionadas
- Enumeração de módulos CMS para Wordpress, Drupal, Joomla, SPIP, etc.
- Detecção de controle de subdomínio
- Detecção Log4Shell (CVE-2021-44228)
- Detecção Spring4Shell (CVE-2020-5398)
- Verifique redirecionamentos https
- Verifique se há vulnerabilidades no upload de arquivos
- Detecção de dispositivos de rede
- Injete cargas dentro do corpo JSON também
Wapiti suporta métodos GET e POST HTTP para ataques. Ele também suporta multipart e pode injetar cargas úteis em nomes de arquivos (upload). Exibir um aviso quando uma anomalia for encontrada (por exemplo, 500 erros e tempos limite). Faz a diferença entre vulnerabilidades XSS permanentes e refletidas.
Nomes de módulos
Os ataques mencionados acima estão vinculados aos seguintes nomes de módulos:
- backup (Pesquise cópias de scripts e arquivos no servidor web)
- brute_login_form (formulário de login de força bruta usando uma lista de dicionário)
- buster (módulo semelhante ao DirBuster)
- cms (digitalizar para detectar CMS e suas versões)
- cookieflags (verifica os sinalizadores Secure e HttpOnly)
- crlf (injeção CR-LF em cabeçalhos HTTP)
- csp (Detectar falta de CSP ou configuração fraca de CSP)
- csrf (detecta formulários não protegidos contra CSRF ou usando tokens anti-CSRF fracos)
- exec (execução de código ou injeção de comando)
- arquivo (travessia de caminho, inclusão de arquivo, etc)
- htaccess (restrições de htaccess mal configuradas)
- htp (identificar tecnologias web usadas no banco de dados HashThePlanet)
- http_header (verifique os cabeçalhos de segurança HTTP)
- https_redirect (verifique redirecionamentos https)
- ldap (detecção de injeção LDAP baseada em erro e booleana)
- log4shell (detecta sites vulneráveis a CVE-2021-44228)
- métodos (procure métodos HTTP incomuns disponíveis, como PUT)
- network_device (Procure arquivos comuns para detectar dispositivos de rede)
- nikto (procure vulnerabilidades conhecidas testando a existência de URL e verificando as respostas)
- permanentexss (verificar novamente todo o alvo após a execução do módulo xss procurando por cargas previamente contaminadas)
- redirecionar (redirecionamentos abertos)
- shellshock (teste o ataque Shellshock, veja Wikipedia)
- spring4shell (detecta sites vulneráveis a CVE-2020-5398)
- sql (detecção de injeção SQL baseada em erro e booleana)
- ssl (avaliar a segurança da configuração do certificado SSL/TLS, requer sslscan)
- ssrf (falsificação de solicitação do lado do servidor)
- aquisição (aquisição de subdomínio)
- timesql (vulnerabilidades de injeção SQL detectadas com metodologia baseada em tempo)
- upload (vulnerabilidades de upload de arquivo)
- wapp (não é um módulo de ataque, recupera tecnologias da web com versões e categorias em uso no alvo, encontre CVEs correspondentes)
- wp_enum (Enumerar plugins e temas em um site Wordpress)
- xss (módulo de injeção XSS)
- xxe (ataque de entidade externa XML)
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 erros), você pode modificar as configurações do seu servidor web.
Por exemplo, você pode definir os seguintes valores em sua configuração do PHP:
modo_seguro=Desligado
display_errors = Ativado (recomendado)
magic_quotes_gpc = Desativado
permitir_url_fopen=Ativado
mysql.trace_mode=Ativado
Onde obter ajuda
No prompt, basta digitar o seguinte comando para obter o uso básico:
wapiti -h
Você também pode dar uma olhada na página de manual (wapiti.1 ou wapiti.1.html) para obter mais detalhes sobre cada opção.
Também temos um wiki oficial que é mais exaustivo: https://github.com/wapiti-scanner/wapiti/wiki
Se você tiver outra dúvida, primeiro verifique o FAQ
Se você encontrar um bug, preencha um problema: https://github.com/wapiti-scanner/wapiti/issues
Como ajudar o projeto Wapiti
Você pode :
- Apoie o projeto fazendo uma doação ( http://sf.net/donate/index.php?group_id=168625 )
- Crie ou melhore módulos de ataque
- Crie ou melhore geradores e modelos de relatórios
- Envie correções de bugs, patches...
- Escreva algumas GUIs
- Crie uma ferramenta para converter arquivos PCAP em arquivos de sessão Wapiti sqlite3
- Fale sobre Wapiti perto de você
Licenciamento
Wapiti é lançado sob a GNU General Public License versão 2 (a GPL). O código-fonte está disponível no Github.
Criado por Nicolas SURRIBAS.
Patrocinadores
Cyberwatch https://cyberwatch.fr/
Segurança para todos https://securityforeveryone.com/
Isenção de responsabilidade
Wapiti é um software de segurança cibernética. Ele realiza avaliações de segurança em um alvo fornecido, o que pode causar mau funcionamento e falhas no alvo, bem como potencial 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 a todas as leis locais aplicáveis.
Os desenvolvedores e 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.