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.
Compreender como ler e interpretar os resultados de um scan Nikto é uma habilidade fundamental para qualquer pessoa em cibersegurança, desde testadores de penetração até administradores de sistemas. A saída pode parecer críptica no início, mas é estruturada para fornecer insights valiosos sobre a configuração de um servidor web e potenciais fraquezas de segurança.
Neste laboratório, você aprenderá a dissecar um relatório de scan Nikto padrão. Para economizar tempo e focar na interpretação, um arquivo de resultado de scan pré-gerado foi fornecido para você. Você analisará este arquivo para identificar informações do alvo, diferenciar entre descobertas, entender referências de vulnerabilidade e revisar o resumo final.
Localizar a seção de resumo de informações do alvo
Nesta etapa, você examinará o início do relatório Nikto para identificar informações básicas sobre o alvo escaneado. Esta seção é crucial, pois confirma o que foi testado e o software básico do servidor detectado.
Um arquivo de relatório de exemplo chamado nikto_scan_results.txt foi criado em seu diretório ~/project. Use o comando cat para exibir seu conteúdo no terminal.
cat ~/project/nikto_scan_results.txt
Observe as primeiras linhas da saída. Este bloco inicial fornece um resumo do alvo.
- Nikto v2.1.6
---------------------------------------------------------------------------
+ Target IP: 172.17.0.2
+ Target Hostname: labex-server
+ Target Port: 80
+ Start Time: 2023-10-27 10:30:00 (GMT0)
---------------------------------------------------------------------------
+ Server: Apache/2.4.52 (Ubuntu)
Aqui está o que essas linhas significam:
Target IP: O endereço IP do servidor que foi escaneado.Target Hostname: O nome do host do servidor.Target Port: A porta TCP na qual o serviço web está em execução (geralmente 80 para HTTP ou 443 para HTTPS).Server: O software do servidor e a versão conforme relatado no cabeçalho HTTPServer. Neste caso, é o Apache versão 2.4.52 em execução no Ubuntu.
Identificar descobertas informacionais e referências OSVDB
Nesta etapa, você aprenderá a identificar descobertas informacionais, que são marcadas com um símbolo +. Estas nem sempre são vulnerabilidades diretas, mas fornecem contexto útil sobre a configuração do servidor.
Muitas descobertas no Nikto estão associadas a um ID OSVDB (Open Source Vulnerability Database). Embora o projeto OSVDB não esteja mais ativo, esses IDs ainda podem ser úteis para referência histórica e para pesquisar detalhes sobre um problema específico.
Vamos usar o comando grep para filtrar o relatório e mostrar apenas as linhas que representam descobertas. Na saída do Nikto, essas linhas começam com um +.
grep "^\+" ~/project/nikto_scan_results.txt
Você verá uma lista de todas as descobertas do scan.
+ Target IP: 172.17.0.2
+ Target Hostname: labex-server
+ Target Port: 80
+ Start Time: 2023-10-27 10:30:00 (GMT0)
+ Server: Apache/2.4.52 (Ubuntu)
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS
+ 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.
+ Uncommon header 'x-powered-by' found, with contents: PHP/8.1.2
+ Allowed HTTP Methods: GET, HEAD, POST, OPTIONS
+ OSVDB-3233: /icons/README: The Apache web server is configured to return a valid response to a request for /icons/README.
+ /index.php: PHP is installed.
+ /admin/: Directory indexing found.
+ OSVDB-3233: /cgi-bin/: directory indexing found.
+ OSVDB-3268: /cgi-bin/test.cgi: This might be interesting...
+ 8123 requests: 0 error(s) and 11 item(s) reported on remote host
+ End Time: 2023-10-27 10:38:20 (GMT0) (500 seconds)
+ 1 host(s) tested
Observe a linha + OSVDB-3233: /icons/README: .... Isso indica uma descoberta informacional (ID 3233) relacionada a um arquivo README publicamente acessível no diretório /icons/, o que é comum em servidores Apache.
Diferenciar entre vulnerabilidades de baixo e alto risco
Nesta etapa, você aprenderá a distinguir entre descobertas que representam um baixo risco e aquelas que podem ser de maior preocupação. O Nikto não atribui um nível de severidade; cabe a você, o analista, interpretar os resultados com base no contexto.
Descobertas de baixo risco geralmente estão relacionadas a práticas recomendadas de segurança que não foram implementadas. Por exemplo:
+ The anti-clickjacking X-Frame-Options header is not present.
Este é um cabeçalho de segurança ausente. Embora seja uma boa prática tê-lo, sua ausência por si só geralmente não leva a um comprometimento direto.
Descobertas de maior risco frequentemente apontam para divulgação de informações ou uma configuração incorreta que pode ser explorada. Por exemplo:
+ /admin/: Directory indexing found.
Isso é mais sério. A indexação de diretórios permite que um atacante veja todos os arquivos e subdiretórios no diretório /admin/, potencialmente revelando arquivos sensíveis, a estrutura da aplicação ou arquivos de backup.
Vamos usar o grep para isolar essa descoberta de maior risco do relatório.
grep "Directory indexing" ~/project/nikto_scan_results.txt
Este comando mostrará todas as instâncias onde a indexação de diretórios foi descoberta.
+ /admin/: Directory indexing found.
+ OSVDB-3233: /cgi-bin/: directory indexing found.
Ver esses resultados deve levar um analista a investigar esses diretórios imediatamente para determinar se alguma informação sensível está exposta.
Compreender o significado das descobertas de diretórios CGI
Nesta etapa, você se concentrará em descobertas relacionadas a diretórios CGI. CGI (Common Gateway Interface) é um protocolo padrão que permite aos servidores web executar programas externos, como scripts. Esses diretórios são um alvo comum para atacantes porque frequentemente contêm arquivos executáveis que podem ter vulnerabilidades.
O Nikto verifica especificamente diretórios CGI comuns como /cgi-bin/. Encontrar tal diretório e os scripts dentro dele é um evento significativo.
Vamos usar o grep para encontrar todas as linhas no relatório que mencionam /cgi-bin/.
grep "/cgi-bin/" ~/project/nikto_scan_results.txt
A saída mostra duas descobertas relacionadas a este diretório.
+ OSVDB-3233: /cgi-bin/: directory indexing found.
+ OSVDB-3268: /cgi-bin/test.cgi: This might be interesting...
A primeira linha confirma que o próprio diretório /cgi-bin/ tem a indexação de diretórios habilitada, o que é uma descoberta de alto risco, como discutido na etapa anterior. A segunda linha indica que o Nikto encontrou um script test.cgi. Scripts de teste são frequentemente deixados para trás pelos desenvolvedores e, às vezes, podem ter vulnerabilidades ou divulgar informações sobre o ambiente do servidor. Um analista sinalizaria isso para investigação manual.
Revisar as estatísticas de resumo do fim do escaneamento
Nesta etapa final, você examinará a seção de resumo no final do relatório Nikto. Esta seção fornece uma visão geral rápida da execução e do escopo do escaneamento.
Para visualizar facilmente as últimas linhas do arquivo, você pode usar o comando tail. Vamos visualizar as últimas 10 linhas do relatório.
tail -n 10 ~/project/nikto_scan_results.txt
Isso exibirá o final do relatório, que inclui as estatísticas de resumo.
+ /admin/: Directory indexing found.
+ OSVDB-3233: /cgi-bin/: directory indexing found.
+ OSVDB-3268: /cgi-bin/test.cgi: This might be interesting...
+ 8123 requests: 0 error(s) and 11 item(s) reported on remote host
+ End Time: 2023-10-27 10:38:20 (GMT0) (500 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested
Aqui está uma análise das principais linhas de resumo:
8123 requests: 0 error(s) and 11 item(s) reported...: Isso informa que o Nikto enviou 8.123 requisições HTTP para o servidor, não encontrou erros e achou 11 itens de interesse.End Time: Isso mostra o carimbo de data/hora quando o escaneamento foi concluído e a duração total.1 host(s) tested: Isso confirma que o escaneamento foi executado em um único alvo.
Este resumo é útil para entender a escala do escaneamento e obter uma contagem de alto nível das descobertas.
Resumo
Neste laboratório, você aprendeu as habilidades essenciais para interpretar um relatório padrão de escaneamento Nikto. Você praticou uma abordagem sistemática para analisar a saída, começando pelas informações básicas do alvo e passando para descobertas mais detalhadas.
Você aprendeu a:
- Identificar o IP, porta e banner de software do servidor alvo.
- Reconhecer descobertas informacionais e a importância das referências OSVDB.
- Diferenciar entre descobertas de baixo risco (como cabeçalhos ausentes) e descobertas de maior risco (como indexação de diretórios).
- Compreender a importância das descobertas de diretórios CGI.
- Revisar o resumo do fim do escaneamento para uma visão geral de alto nível.
Este processo de análise estruturada é fundamental para transformar a saída bruta do scanner em inteligência acionável para proteger aplicações web.


