Wapiti - verificando vulnerabilidades em um site por conta própria

Wapiti - verificando vulnerabilidades em um site por conta própria
No passado статье nós conversamos sobre Nemesida WAF grátis - uma ferramenta gratuita para proteger sites e APIs contra ataques de hackers, e nesta decidimos revisar um popular scanner de vulnerabilidades Uapiti.

A varredura de vulnerabilidades em um site é uma medida necessária que, aliada à análise do código-fonte, permite avaliar o nível de sua segurança contra ameaças de comprometimento. Você pode verificar um recurso da web usando ferramentas especializadas.

Nikto, W3af (escrito em Python 2.7, que não é mais suportado) ou Arachni (não é mais suportado desde fevereiro) são as soluções mais populares apresentadas no segmento gratuito. Claro, existem outros, por exemplo, Wapiti, nos quais decidimos focar.

Wapiti funciona com os seguintes tipos de vulnerabilidades:

  • expansão de arquivos (local e remoto, fopen, readfile);
  • injeções (injeção PHP/JSP/ASP/SQL e injeção XPath);
  • XSS (Cross Site Scripting) (reflexivo e persistente);
  • detecção e execução de comandos (eval(), system(), passtru());
  • Injeções CRLF (divisão de resposta HTTP, fixação de sessão);
  • Incorporação XXE (entidade externa XML);
  • SSRF (falsificação de solicitação do lado do servidor);
  • uso de arquivos potencialmente perigosos conhecidos (graças ao banco de dados Nikto);
  • configurações .htaccess fracas que podem ser ignoradas;
  • a presença de arquivos de backup que revelam informações confidenciais (divulgação do código-fonte);
  • Trauma pós guerra;
  • redirecionamentos abertos;
  • métodos HTTP não padrão que podem ser resolvidos (PUT).

Características:

  • Suporte a proxy HTTP, HTTPS e SOCKS5;
  • autenticação através de vários métodos: Basic, Digest, Kerberos ou NTLM;
  • a capacidade de limitar a área de digitalização (domínio, pasta, página, URL);
  • remoção automática de um dos parâmetros da URL;
  • múltiplas precauções contra loops de varredura intermináveis ​​(exemplo: ifor, limites de valores para um parâmetro);
  • a capacidade de definir uma prioridade para examinar URLs (mesmo que não estejam na área de digitalização);
  • capacidade de excluir alguns URLs de varreduras e ataques (por exemplo: logout de URL);
  • importar cookies (obtê-los usando a ferramenta wapiti-getcookie);
  • capacidade de ativar/desativar verificação de certificado SSL;
  • a capacidade de extrair URLs de JavaScript (um interpretador JS muito simples);
  • interação com HTML5;
  • diversas opções para gerenciar o comportamento e as restrições do rastreador;
  • definir o tempo máximo para o processo de digitalização;
  • adicionando alguns cabeçalhos HTTP personalizados ou configurando um User-Agent personalizado.

Características adicionais:

  • criação de relatórios de vulnerabilidade em diversos formatos (HTML, XML, JSON, TXT);
  • pausar e retomar uma varredura ou ataque (mecanismo de sessão usando bancos de dados SQLite3);
  • iluminação de fundo no terminal para destacar vulnerabilidades;
  • diferentes níveis de registro;
  • Uma maneira rápida e fácil de ativar/desativar módulos de ataque.

Instalação

A versão atual do Wapiti pode ser instalada de 2 maneiras:

  • baixe a fonte do oficial сайта e execute o script de instalação, tendo instalado previamente o Python3;
  • usando o comando pip3 install wapiti3.

Depois disso, Wapiti estará pronto para partir.

Trabalhando com a ferramenta

Para demonstrar o trabalho do Wapiti, usaremos um estande especialmente preparado sites.vulns.pentestit.ru (recurso interno), contendo diversas vulnerabilidades (Injeção, XSS, LFI/RFI) e outras deficiências de aplicações web.

As informações são fornecidas apenas para fins informativos. Não quebre a lei!

Comando básico para iniciar o scanner:

# wapiti -u <target> <options>

Ao mesmo tempo, há ajuda bastante detalhada com um grande número de opções de inicialização, por exemplo:

--escopo - area de aplicação
Se você especificar o parâmetro scope junto com o URL de rastreamento, poderá ajustar a área de rastreamento do site especificando uma única página e todas as páginas que podem ser encontradas no site.

-s и -x — opções para adicionar ou remover URLs específicos. Essas opções são úteis quando você precisa adicionar ou remover um URL específico durante o processo de rastreamento.

--pular — o parâmetro especificado com esta chave será verificado, mas não será atacado. Útil se houver algum parâmetro perigoso que seja melhor excluir durante a verificação.

--verificar-ssl — ativar ou desativar a verificação de certificado.
O scanner Wapiti é modular. No entanto, para iniciar módulos específicos, incluindo aqueles que são conectados automaticamente enquanto o scanner está em execução, você precisa usar a opção -m e listar aqueles que você precisa, separados por vírgulas. Se a chave não for usada, todos os módulos funcionarão por padrão. Na versão mais simples ficará assim:

# wapiti -u http://sites.vulns.pentestit.ru/ -m sql,xss,xxe

Este exemplo de uso significa que usaremos apenas os módulos SQL, XSS e XXE ao verificar o destino. Além disso, você pode filtrar o funcionamento dos módulos dependendo do método desejado. Por exemplo -m “xss: get, blindsql: postagem, xxe: postagem”. Neste caso, o módulo xss será aplicado a solicitações enviadas usando o método GET, e o módulo blibdsql - para solicitações POST, etc. A propósito, se algum módulo incluído na lista não for necessário durante a verificação ou demorar muito, pressionando a combinação Ctrl+C você pode pular o uso do módulo atual selecionando o item correspondente no menu interativo.

Wapiti suporta a passagem de solicitações por meio de um proxy usando uma chave -p e autenticação no site de destino através do parâmetro -a. Você também pode especificar o tipo de autenticação: Básico, Digerir, Kerberos и NTLM. Os dois últimos podem exigir a instalação de módulos adicionais. Além disso, você pode inserir qualquer cabeçalho nas solicitações (incluindo cabeçalhos arbitrários User-Agent) e muito mais.

Para usar autenticação você pode usar a ferramenta wapiti-getcookie. Com sua ajuda formamos biscoito, que o Wapiti usará durante a digitalização. Formação biscoito feito com o comando:

# wapiti-getcookie -u http://sites.vulns.pentestit.ru/login.php -c cookie.json

Trabalhando de forma interativa, respondemos dúvidas e indicamos as informações necessárias como login, senha, etc.:

Wapiti - verificando vulnerabilidades em um site por conta própria

A saída é um arquivo no formato JSON. Outra opção é adicionar todas as informações necessárias através do parâmetro -d:

# wapiti-getcookie - http://sites.vulns.pentestit.ru/login.php -c cookie.json -d "username=admin&password=admin&enter=submit"

O resultado será semelhante:

Wapiti - verificando vulnerabilidades em um site por conta própria

Ao considerar a funcionalidade principal do scanner, a solicitação final para testar a aplicação web em nosso caso foi:

# wapiti --level 1 -u http://sites.vulns.pentestit.ru/ -f html -o /tmp/vulns.html -m all --color -с cookie.json --scope folder --flush-session -A 'Pentestit Scans' -p http://proxy.office.pentestit.ru:3128

onde entre outros parâmetros:

-f и -o — formato e caminho para salvar o relatório;

-m — não é recomendado conectar todos os módulos, pois afetará o tempo de teste e o tamanho do relatório;

--cor — destacar as vulnerabilidades encontradas dependendo da sua criticidade de acordo com o próprio Wapiti;

-c - usando um arquivo com biscoito, gerado usando wapiti-getcookie;

--escopo - escolhendo um alvo para ataque. Selecionando uma opção dobrador Cada URL será rastreada e atacada, começando pela base. O URL base deve ter uma barra (sem nome de arquivo);

--flush-sessão — permite varreduras repetidas, nas quais os resultados anteriores não serão levados em consideração;

-A - ter User-Agent;

-p — endereço do servidor proxy, se necessário.

Um pouco sobre o relatório

O resultado da verificação é apresentado na forma de um relatório detalhado sobre todas as vulnerabilidades encontradas em formato de página HTML, de forma clara e de fácil leitura. O relatório indicará as categorias e quantidade de vulnerabilidades encontradas, suas descrições, solicitações, comandos para enrolar e dicas sobre como fechá-los. Para facilitar a navegação, será adicionado um link aos nomes das categorias, clicando no qual você poderá acessá-lo:

Wapiti - verificando vulnerabilidades em um site por conta própria

Uma desvantagem significativa do relatório é a ausência de um mapa da aplicação web propriamente dito, sem o qual não ficará claro se todos os endereços e parâmetros foram analisados. Também existe a possibilidade de falsos positivos. No nosso caso, o relatório inclui “arquivos de backup” e “arquivos potencialmente perigosos”. Seu número não corresponde à realidade, pois não existiam tais arquivos no servidor:

Wapiti - verificando vulnerabilidades em um site por conta própria

Talvez os módulos que funcionam incorretamente sejam corrigidos com o tempo. Outra desvantagem do relatório é a falta de coloração das vulnerabilidades encontradas (dependendo de sua criticidade), ou pelo menos de divisão delas em categorias. A única maneira de entendermos indiretamente a criticidade da vulnerabilidade encontrada é usar o parâmetro --cor durante a verificação e, em seguida, as vulnerabilidades encontradas serão coloridas em cores diferentes:

Wapiti - verificando vulnerabilidades em um site por conta própria

Mas o relatório em si não fornece esse colorido.

Vulnerabilidades

SQLiName

O scanner lidou parcialmente com a pesquisa SQLi. Ao procurar vulnerabilidades SQL em páginas onde a autenticação não é necessária, não surgem problemas:

Wapiti - verificando vulnerabilidades em um site por conta própria

Não foi possível encontrar vulnerabilidade em páginas acessíveis somente após autenticação, mesmo utilizando válidos biscoito, já que provavelmente após a autenticação bem-sucedida, sua sessão será “desconectada” e biscoito se tornará inválido. Se a função de desautorização fosse implementada como um script separado responsável pelo processamento deste procedimento, então seria possível excluí-lo completamente através do parâmetro -x e, assim, evitar que ele fosse acionado. Caso contrário, não será possível excluir o seu processamento. Isso não é um problema de um módulo específico, mas da ferramenta como um todo, mas por causa dessa nuance não foi possível detectar diversas injeções em uma área fechada de recursos.

XSS

O scanner lidou perfeitamente com a tarefa dada e encontrou todas as vulnerabilidades preparadas:

Wapiti - verificando vulnerabilidades em um site por conta própria

LFI/RFI

O scanner encontrou todas as vulnerabilidades subjacentes:

Wapiti - verificando vulnerabilidades em um site por conta própria

Em geral, apesar dos falsos positivos e das vulnerabilidades ausentes, o Wapiti, como ferramenta gratuita, apresenta resultados de desempenho muito bons. Em qualquer caso, vale a pena reconhecer que o scanner é bastante poderoso, flexível e multifuncional e, o mais importante, é gratuito, por isso tem o direito de ser utilizado para ajudar administradores e desenvolvedores a obter informações básicas sobre o status de segurança de um site. aplicativo.

Mantenha-se saudável e protegido!

Fonte: habr.com

Adicionar um comentário