Depurar um Scan Nikto para Solução de Problemas

Kali LinuxBeginner
Pratique Agora

Introdução

Nikto é um popular scanner de servidores web de código aberto que realiza testes abrangentes contra servidores web para vários itens, incluindo mais de 6700 arquivos/programas potencialmente perigosos, verifica versões desatualizadas de mais de 1250 servidores e problemas específicos de versão em mais de 270 servidores.

Embora o Nikto seja poderoso, os scans às vezes podem falhar, produzir resultados inesperados ou exigir uma investigação mais aprofundada. Nessas situações, os recursos de depuração do Nikto são inestimáveis. Eles permitem que você veja as requisições HTTP exatas que estão sendo enviadas e as respostas recebidas, ajudando você a identificar problemas de rede, configurações incorretas do servidor ou problemas com o próprio scan.

Neste laboratório, você aprenderá a usar as opções de depuração do Nikto para solucionar problemas e entender seus scans de vulnerabilidade web de forma eficaz.

Executar um scan com a opção -debug

Nesta etapa, você realizará um scan básico do Nikto usando a opção -debug. Esta opção fornece uma saída altamente verbosa, mostrando os detalhes completos de cada requisição enviada pelo Nikto e a resposta correspondente do servidor. Este é o primeiro e mais crucial passo para solucionar qualquer scan.

Primeiro, certifique-se de estar no diretório ~/project. Já configuramos um servidor web simples rodando em 127.0.0.1 na porta 8000 para você escanear.

Execute o seguinte comando para rodar o Nikto com a opção -debug contra o servidor web local:

nikto -h http://127.0.0.1:8000 -debug

Você verá uma grande quantidade de saída rolando. Esta é a informação de depuração. Ela inclui os resultados padrão do scan do Nikto misturados com dados detalhados de requisição e resposta.

Uma pequena parte da saída se parecerá com isto, mostrando a comunicação HTTP bruta:

- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    127.0.0.1
+ Target Port:        8000
+ Start Time:         ...
---------------------------------------------------------------------------
+ Server: SimpleHTTP/0.6 Python/3.10.12
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type
+ No CGI directories found (use '-C all' to force check all possible dirs)
DEBUG: User-Agent is 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
DEBUG: Request -> 127.0.0.1:8000
GET / HTTP/1.1
Host: 127.0.0.1:8000
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36
Accept-Encoding: gzip,deflate
Accept: */*


DEBUG: Response -> 127.0.0.1:8000
HTTP/1.0 200 OK
Server: SimpleHTTP/0.6 Python/3.10.12
Date: ...
Content-type: text/html; charset=utf-8
Content-Length: 36
Last-Modified: ...

DEBUG: Received: <h1>Welcome to the Test Site</h1>

... (many more lines) ...

Esta visualização detalhada é essencial para entender exatamente o que o Nikto está testando.

Observe as informações detalhadas de requisição e resposta

Nesta etapa, você observará mais de perto a saída gerada na etapa anterior. O grande volume de informações de depuração pode ser avassalador, por isso é útil usar uma ferramenta de paginação como less para revisá-la.

Vamos executar o comando novamente, mas desta vez canalizaremos a saída para less. Isso permite que você navegue pela saída página por página.

nikto -h http://127.0.0.1:8000 -debug | less

Assim que a saída aparecer no less, você pode usar as seguintes teclas para navegar:

  • Teclas de seta ou j/k para rolar para cima e para baixo.
  • Page Up/Page Down ou barra de espaço para mover por páginas.
  • q para sair e retornar ao prompt de comando.

Ao rolar, preste atenção a estas partes importantes da saída de depuração para cada teste:

  • DEBUG: Request ->: Esta seção mostra a requisição HTTP exata que está sendo enviada, incluindo o método (GET, POST, etc.), o URI e todos os cabeçalhos (headers).
  • DEBUG: Response ->: Isso mostra os cabeçalhos de resposta do servidor, incluindo o código de status HTTP (por exemplo, 200 OK, 404 Not Found).
  • DEBUG: Received:: Isso mostra o corpo da resposta HTTP do servidor.

Ao examinar essas informações, você pode verificar se o servidor está respondendo como esperado, se um firewall está bloqueando requisições ou se o Nikto está interpretando uma resposta corretamente.

Pressione q para sair do less quando terminar de observar.

Redirecionar a saída de depuração para um arquivo para análise posterior

Nesta etapa, você aprenderá como salvar a saída de depuração verbosa em um arquivo. Para scans longos ou complexos, analisar a saída em tempo real é impraticável. Salvá-la em um arquivo permite análise offline, pesquisa e compartilhamento com membros da equipe.

As informações de depuração do Nikto são enviadas para o fluxo Standard Error (STDERR), enquanto os resultados normais vão para o Standard Output (STDOUT). Para capturar tudo, você deve redirecionar ambos os fluxos para um arquivo.

Use o seguinte comando para executar o scan e salvar toda a saída em um arquivo chamado debug_output.txt:

nikto -h http://127.0.0.1:8000 -debug > debug_output.txt 2>&1

Vamos detalhar a parte do redirecionamento:

  • >: Este é o operador de redirecionamento de saída padrão. Ele envia STDOUT para debug_output.txt.
  • 2>&1: Isso redireciona STDERR (descritor de arquivo 2) para o mesmo local que STDOUT (descritor de arquivo 1), que é o nosso arquivo.

Após o comando terminar, verifique se o arquivo foi criado:

ls -l debug_output.txt

Você deverá ver o arquivo listado na saída:

-rw-r--r-- 1 labex labex ... ... debug_output.txt

Agora você pode examinar o conteúdo do arquivo usando cat ou less:

less debug_output.txt

Você agora tem um registro permanente do scan e suas informações de depuração para revisão detalhada. Pressione q para sair do less.

Use -dbcheck para verificar a sintaxe dos bancos de dados de scan

Nesta etapa, você usará a opção -dbcheck. Esta é uma ferramenta de diagnóstico que não realiza um scan, mas sim verifica a sintaxe dos bancos de dados e plugins internos do Nikto. Se o Nikto estiver travando, falhando ao iniciar ou se comportando erraticamente, executar uma verificação de banco de dados é um bom primeiro passo para garantir que seus próprios arquivos não estejam corrompidos.

Os bancos de dados contêm as definições para todas as verificações de vulnerabilidade que o Nikto realiza. Um erro de sintaxe em um desses arquivos pode fazer com que os testes falhem silenciosamente ou que o programa inteiro trave.

Para realizar a verificação, execute o seguinte comando:

nikto -dbcheck

O Nikto analisará seus arquivos de plugin e bancos de dados. Se tudo estiver correto, a saída confirmará que nenhum erro foi encontrado.

- Nikto v2.5.0
---------------------------------------------------------------------------
+ DBCheck: Parsing database '/var/lib/nikto/plugins/db_variables'
+ DBCheck: Parsing database '/var/lib/nikto/plugins/db_tests'
... (muitas mais linhas) ...
+ DBCheck: 0 error(s) found in database.

Se erros foram encontrados, a saída apontaria para o arquivo específico e o número da linha, o que o ajudaria a corrigir o problema (ou reinstalar o Nikto, se necessário). Este comando simples pode economizar muito tempo ao solucionar problemas da própria ferramenta.

Solucionar problemas de um scan com falha usando a saída de depuração

Nesta etapa, você aplicará o que aprendeu a um cenário prático de solução de problemas. Simularemos um problema comum: um scan que falha porque o host de destino não está acessível. Sem a saída de depuração, a causa pode não ser imediatamente óbvia.

Tentaremos escanear um endereço IP inexistente na rede local, 10.255.255.1. Também usaremos -maxtime 10s para garantir que o scan termine rapidamente.

Execute o seguinte comando:

nikto -h 10.255.255.1 -maxtime 10s -debug

Observe a saída com atenção. Como o host não existe, o Nikto não conseguirá estabelecer uma conexão. A saída de depuração mostrará claramente essas tentativas e falhas de conexão.

Você verá mensagens de erro como esta espalhadas pelo log de depuração:

- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          10.255.255.1
+ Target Hostname:    10.255.255.1
+ Target Port:        80
+ Start Time:         ...
---------------------------------------------------------------------------
+ Server: No banner retrieved
DEBUG: Request -> 10.255.255.1:80
GET / HTTP/1.1
Host: 10.255.255.1
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36
Accept-Encoding: gzip,deflate
Accept: */*


+ ERROR: Cannot connect to 10.255.255.1:80 (No route to host)
...

A mensagem chave aqui é ERROR: Cannot connect... (No route to host). Isso informa imediatamente que o problema não é com a configuração do servidor web ou um bug no Nikto, mas sim um problema fundamental de conectividade de rede. O scan está "falhando" porque o destino não está acessível. Isso demonstra como a opção -debug fornece o contexto necessário para diagnosticar rapidamente a causa raiz de um problema.

Resumo

Neste laboratório, você aprendeu as técnicas essenciais para depurar e solucionar problemas de scans do servidor web Nikto.

Você começou usando a opção -debug para visualizar dados detalhados de requisição e resposta, o que lhe deu uma imagem clara das ações do scanner. Em seguida, aprendeu como gerenciar essa saída redirecionando-a para um arquivo para análise offline. Você também usou a utilidade -dbcheck para verificar a integridade dos próprios arquivos de banco de dados do Nikto, um passo crucial ao solucionar problemas da ferramenta em si. Finalmente, você aplicou essas habilidades a um cenário do mundo real, identificando rapidamente um problema de conectividade de rede como a causa de um scan com falha.

Com essas habilidades, você agora está mais bem equipado para diagnosticar e resolver problemas, garantindo que seus scans do Nikto sejam eficazes e confiáveis.