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.
Ao executar o Nikto a partir da linha de comando, ele produz muita saída em tempo real, o que é útil para uso interativo. No entanto, quando você deseja automatizar varreduras usando scripts, essa saída verbosa pode ser indesejável.
Neste laboratório, você aprenderá a usar a opção -Mute para executar varreduras Nikto silenciosamente. Esta é uma habilidade crucial para integrar o Nikto em fluxos de trabalho de segurança automatizados e scripts shell, permitindo que você capture resultados em arquivos sem poluir o console.
Executar uma varredura padrão e observar a saída detalhada do console
Nesta etapa, você realizará uma varredura básica do Nikto contra um servidor web de teste. Isso o ajudará a entender o comportamento padrão e a quantidade de informações que ele imprime no console.
Primeiro, vamos executar uma varredura padrão. A opção -h é usada para especificar o host de destino. Nosso servidor de teste está sendo executado localmente na porta 8000.
Execute o seguinte comando em seu terminal:
nikto -h http://127.0.0.1:8000
Você verá muita saída, incluindo o banner da versão do Nikto, informações do alvo e atualizações de status em tempo real à medida que a varredura progride.
- 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.6
+ 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)
... (muitas outras linhas de saída) ...
+ 1 host(s) tested
Esta saída detalhada é útil para monitorar uma varredura em tempo real, mas não é ideal para automação.
Usar a opção -Mute para suprimir a saída normal do console
Nesta etapa, você aprenderá a usar a opção -Mute para reduzir significativamente a saída do console. Esta opção instrui o Nikto a suprimir as requisições e respostas HTTP normais que ele exibiria tipicamente durante uma varredura.
A opção -Mute é perfeita para situações em que você se preocupa apenas com as descobertas finais, não com o progresso passo a passo.
Agora, execute a mesma varredura de antes, mas adicione a opção -Mute ao final do comando:
nikto -h http://127.0.0.1:8000 -Mute
Observe a saída agora. Está muito mais limpa. O banner e as atualizações de status em tempo real desapareceram. Você verá apenas o resumo final das descobertas.
- 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.6
+ 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)
+ 1 host(s) tested
Como você pode ver, a saída é muito menos poluída, tornando mais fácil de analisar ou ler quando a varredura faz parte de um processo maior.
Combinar -Mute com -o para salvar resultados silenciosamente em um arquivo
Nesta etapa, levaremos o silenciamento um passo adiante. O objetivo é executar uma varredura que produza nenhuma saída no console e salve todas as descobertas diretamente em um arquivo. Este é o requisito mais comum para scripts automatizados.
Para conseguir isso, você pode combinar a opção -Mute com a opção -o (ou --output), que especifica um arquivo de saída.
Execute o seguinte comando. Ele realizará a varredura, suprimirá toda a saída do console e salvará o relatório em um arquivo chamado nikto_report.txt.
nikto -h http://127.0.0.1:8000 -Mute -o nikto_report.txt
Após executar o comando, você notará que o prompt do seu terminal retorna imediatamente sem imprimir nenhum resultado da varredura. A varredura foi executada silenciosamente em segundo plano.
Para confirmar que o relatório foi gerado, primeiro liste os arquivos no diretório atual:
ls
Você deverá ver nikto_report.txt na lista.
nikto_report.txt www
Agora, visualize o conteúdo do arquivo de relatório:
cat nikto_report.txt
O conteúdo do arquivo será o mesmo da saída silenciada que você viu na etapa anterior. Esta técnica é essencial para manter logs ou processar resultados de varredura programaticamente.
Escrever um script bash simples que chama uma varredura Nikto silenciada
Nesta etapa, você criará um script bash simples para automatizar a varredura silenciosa do Nikto. Isso demonstra como as opções -Mute e -o são usadas em um cenário de automação do mundo real.
Primeiro, crie um novo arquivo chamado scan.sh usando o editor de texto nano:
nano scan.sh
Dentro do editor nano, adicione o seguinte conteúdo. Este script exibirá mensagens de status para o usuário, executará a varredura silenciosa do Nikto e salvará os resultados em um novo arquivo chamado script_report.txt.
#!/bin/bash
echo "Starting silent Nikto scan..."
nikto -h http://127.0.0.1:8000 -Mute -o script_report.txt
echo "Scan complete. Report saved to script_report.txt"
Pressione Ctrl+X para sair, Y para salvar as alterações e Enter para confirmar o nome do arquivo.
Em seguida, você precisa tornar o script executável. Use o comando chmod para adicionar permissões de execução:
chmod +x scan.sh
Finalmente, execute seu novo script:
./scan.sh
O script exibirá as mensagens "Starting" e "Scan complete", mas a própria varredura Nikto não produzirá nenhuma saída no console.
Starting silent Nikto scan...
Scan complete. Report saved to script_report.txt
Você pode verificar se o novo arquivo de relatório script_report.txt foi criado usando o comando ls novamente.
Verificar o código de saída do script para determinar a conclusão da varredura
Nesta etapa, você aprenderá como verificar o código de saída do seu script. Em scripts de shell, o código de saída é um número que um comando ou script retorna após terminar sua execução. Um código de saída de 0 convencionalmente significa que o comando foi concluído com sucesso.
Este é um conceito fundamental para a construção de scripts confiáveis, pois permite verificar se uma etapa foi bem-sucedida antes de prosseguir para a próxima.
Primeiro, execute seu script novamente:
./scan.sh
Imediatamente após o script terminar, você pode verificar seu código de saída examinando a variável especial do shell $?. Esta variável sempre contém o código de saída do último comando que foi executado.
Execute o seguinte comando:
echo $?
A saída deve ser 0, indicando que seu script scan.sh foi concluído sem erros.
0
Em scripts mais avançados, você poderia usar essa verificação em uma instrução if para lidar com erros, por exemplo:
./scan.sh
if [ $? -eq 0 ]; then
echo "Script completed successfully."
else
echo "Script failed with an error."
fi
Isso confirma que você pode executar sua varredura Nikto silenciada de forma confiável dentro de um script e verificar programaticamente sua conclusão.
Resumo
Neste laboratório, você aprendeu a controlar a saída do console do Nikto para scripting e automação eficazes.
Você começou observando a saída detalhada de uma varredura Nikto padrão. Em seguida, usou a opção -Mute para suprimir a saída não essencial e a opção -o para salvar os resultados da varredura silenciosamente em um arquivo. Finalmente, você integrou essas opções em um script bash e aprendeu a verificar o código de saída do script para verificar a conclusão bem-sucedida.
Essas habilidades são fundamentais para qualquer pessoa que deseje automatizar avaliações de segurança web e construir ferramentas de segurança poderosas e não interativas.


