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. No entanto, às vezes, uma varredura completa pode ser muito "barulhenta" ou produzir falsos positivos. Neste laboratório, você aprenderá como refinar suas varreduras Nikto excluindo plugins específicos, tornando seus resultados mais focados e acionáveis.
Identificar um plugin barulhento ou indesejado de uma varredura completa
Nesta etapa, realizaremos uma varredura básica do Nikto contra um servidor web de teste. Esta varredura inicial servirá como uma linha de base, permitindo-nos ver todas as descobertas geradas pelo conjunto padrão de plugins. A partir deste relatório completo, podemos identificar plugins que talvez queiramos excluir em varreduras futuras.
Primeiro, certifique-se de que você está no diretório ~/project. Nosso script de configuração já iniciou um servidor web simples em segundo plano. Vamos executar uma varredura padrão do Nikto contra ele. A opção -h é usada para especificar o host de destino.
Execute o seguinte comando no seu terminal:
nikto -h http://127.0.0.1:8000
Após a conclusão da varredura, você verá um relatório. Sua saída será semelhante a esta, embora a versão do servidor e outros detalhes possam variar.
- 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)
+ OSVDB-3233: /cgi-bin/: This might be interesting...
+ 7558 requests: 0 error(s) and 4 item(s) reported on remote host
+ End Time: ...
---------------------------------------------------------------------------
+ 1 host(s) tested
Na saída acima, observe a linha: + OSVDB-3233: /cgi-bin/: This might be interesting.... Esta descoberta é gerada pelo plugin cgi. Para este laboratório, fingiremos que este é um diretório esperado e que a descoberta é apenas "ruído" que queremos suprimir.
Use a opção -plugins com um hífen precedendo
Nesta etapa, aprenderemos sobre a sintaxe usada para controlar quais plugins o Nikto executa. O Nikto fornece a opção -plugins para esse fim. Para excluir um plugin, você fornece o nome dele com um hífen precedendo (-).
Para saber quais plugins estão disponíveis para inclusão ou exclusão, você pode usar a opção -list-plugins. Isso imprimirá uma lista de todos os plugins disponíveis com uma breve descrição de cada um.
Vamos listar todos os plugins:
nikto -list-plugins
A saída será uma lista longa. Aqui está uma pequena amostra do que você verá:
- Nikto v2.5.0
---------------------------------------------------------------------------
Loaded Main Plugins:
- apache_expect_header
Apache Expect header XSS (CVE-2006-3918)
- apache_users
Checks for sensitive files in ~user directories
- auth
Checks for authentication problems
- cgi
Checks for CGI directories
- clientaccesspolicy
Checks for permissive Client Access Policy (Silverlight)
... (a lista continua) ...
A partir desta lista, você pode encontrar os nomes exatos dos plugins que deseja excluir, como cgi, que identificamos na etapa anterior.
Construir o comando para excluir um único plugin
Nesta etapa, combinaremos o que aprendemos para construir o comando para uma nova varredura que exclui um único plugin. Teremos como alvo o plugin cgi que identificamos na Etapa 1.
A sintaxe é direta: você anexa a opção -plugins ao seu comando de varredura normal, seguido pelo nome do plugin precedido por um hífen.
A estrutura do comando é: nikto -h [alvo] -plugins -[plugin_a_excluir]
Com base nesta estrutura, o comando para escanear nosso servidor local enquanto exclui o plugin cgi é:
nikto -h http://127.0.0.1:8000 -plugins -cgi
Este comando diz ao Nikto para realizar sua varredura padrão em http://127.0.0.1:8000, mas para pular quaisquer verificações associadas ao plugin cgi. Na próxima etapa, executaremos este comando e observaremos a diferença na saída.
Executar a varredura e verificar se o plugin foi pulado
Nesta etapa, você executará o comando que construímos na etapa anterior. Ao executar a varredura com o plugin cgi excluído, esperamos que o relatório não contenha mais a descoberta relacionada ao diretório /cgi-bin/.
Agora, execute o comando no seu terminal:
nikto -h http://127.0.0.1:8000 -plugins -cgi
A varredura será executada novamente, mas desta vez será um pouco mais rápida, pois está realizando menos verificações. A saída deve ser semelhante a esta:
- 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.
+ 7557 requests: 0 error(s) and 3 item(s) reported on remote host
+ End Time: ...
---------------------------------------------------------------------------
+ 1 host(s) tested
Compare esta saída com a da Etapa 1. Você notará que a linha + OSVDB-3233: /cgi-bin/: This might be interesting... agora está faltando. Isso confirma que excluímos com sucesso o plugin cgi de nossa varredura.
Excluir múltiplos plugins em um único comando
Nesta etapa, você aprenderá como excluir vários plugins em uma única varredura. Isso é útil quando você deseja suprimir vários plugins barulhentos ou irrelevantes de uma vez.
Para excluir vários plugins, você fornece uma lista de nomes de plugins separados por vírgula após a opção -plugins. Cada nome de plugin na lista deve ser precedido por um hífen.
A sintaxe é: nikto -h [alvo] -plugins -[plugin1],-[plugin2],-[plugin3]
Vamos expandir nosso comando anterior para também excluir o plugin apache_expect_header, que é outra descoberta comum que pode ser considerada de baixa prioridade em alguns contextos.
Construa e execute o seguinte comando:
nikto -h http://127.0.0.1:8000 -plugins -cgi,-apache_expect_header
A saída agora será ainda mais concisa, pois as verificações dos plugins cgi e apache_expect_header foram puladas.
- 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.
+ ... requests: 0 error(s) and 2 item(s) reported on remote host
+ End Time: ...
---------------------------------------------------------------------------
+ 1 host(s) tested
Como você pode ver, ao excluir seletivamente plugins, você pode adaptar o comportamento de varredura do Nikto para atender às suas necessidades específicas, resultando em relatórios mais limpos e relevantes.
Resumo
Neste laboratório, você aprendeu como personalizar as varreduras do Nikto excluindo plugins específicos. Você começou executando uma varredura de linha de base completa para identificar um plugin a ser excluído. Em seguida, aprendeu sobre a opção -plugins e o comando -list-plugins. Finalmente, praticou a construção e execução de comandos para excluir um único plugin e vários plugins, verificando os resultados observando as mudanças na saída da varredura. Esta técnica é essencial para executar varreduras de vulnerabilidade mais eficientes, direcionadas e menos ruidosas com o Nikto.



