Executar uma Varredura Básica de Servidor Web com Nikto

Kali LinuxBeginner
Pratique Agora

Introdução

Nikto é um scanner de servidor 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. Ele também verifica itens de configuração do servidor, como a presença de vários arquivos de índice e opções do servidor HTTP.

Neste laboratório, você aprenderá os fundamentos do uso do Nikto para realizar uma varredura básica. Começaremos configurando um servidor web local simples para atuar como nosso alvo e, em seguida, usaremos o Nikto para escaneá-lo e analisar os resultados.

Identificar o endereço IP ou nome do host do alvo

Nesta etapa, identificaremos e confirmaremos o endereço do nosso servidor web alvo. Antes de executar qualquer varredura, você deve saber o endereço IP ou nome do host do alvo. Para este laboratório, o script de configuração já iniciou um servidor web simples rodando em sua máquina local.

Em um contexto de rede, sua própria máquina pode ser referida pelo nome do host localhost ou pelo endereço IP 127.0.0.1. Este endereço especial é um endereço de "loopback", o que significa que ele sempre aponta de volta para a máquina local.

Vamos verificar se nosso servidor web está rodando e acessível. Podemos usar o comando curl para enviar uma requisição ao nosso servidor local. O servidor está rodando na porta 8000.

Execute o seguinte comando em seu terminal:

curl http://localhost:8000

Você deverá ver o conteúdo HTML da nossa página web simples, o que confirma que o servidor está ativo e pronto para ser escaneado.

<h1>Welcome to the Test Server</h1>

Agora que confirmamos nosso alvo em localhost:8000, podemos prosseguir para a próxima etapa.

Construir o comando de varredura básico usando a flag -h

Nesta etapa, aprenderemos como construir um comando básico de varredura com o Nikto. O Nikto possui muitas opções, mas a mais fundamental é especificar o host alvo.

A flag -h ou -host é usada para dizer ao Nikto qual servidor escanear. Para se familiarizar com esta e outras opções, você pode visualizar o menu de ajuda do Nikto.

Execute o seguinte comando para exibir as informações de ajuda:

nikto -Help

A saída será bastante longa, listando todas as opções disponíveis. Percorra-a ou use a função de busca do seu terminal para encontrar a opção -h. Você verá uma descrição semelhante a esta:

...
-h, -host       Target host/IP/SSL-name
...

Como nosso servidor não está rodando na porta HTTP padrão (80), também precisamos especificar o número da porta. Podemos fazer isso usando a flag -p ou -port.

Com base nisso, o comando para escanear nosso servidor local na porta 8000 seria nikto -h localhost -p 8000. Executaremos este comando na próxima etapa.

Executar a varredura contra o servidor alvo

Nesta etapa, você executará a varredura Nikto usando o comando que construímos. Isso iniciará o processo de varredura, onde o Nikto envia uma série de requisições ao servidor alvo para investigar potenciais problemas.

Agora, execute a varredura contra o seu servidor web local.

nikto -h localhost -p 8000

Assim que você executar o comando, o Nikto iniciará a varredura. Ele primeiro exibirá algumas informações básicas sobre o alvo e, em seguida, começará a executar seus testes. O processo pode levar alguns momentos para ser concluído. Você verá os resultados impressos diretamente no seu terminal em tempo real.

Observar a saída em tempo real durante a varredura

Nesta etapa, examinaremos a saída gerada pela varredura Nikto. À medida que a varredura é executada, o Nikto relata suas descobertas. Cada descoberta é tipicamente prefixada com um sinal de mais (+).

A saída da etapa anterior deve ser semelhante à seguinte. Observe que os números das versões e os horários variarão.

- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    localhost
+ Target Port:        8000
+ Start Time:         2023-10-27 10:30:00 (GMT0)
---------------------------------------------------------------------------
+ Server: SimpleHTTP/0.6 Python/3.10.12
+ 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
+ No CGI directories found (use '-C all' to force check all possible dirs)
+ Allowed HTTP Methods: GET, HEAD, OPTIONS
+ OSVDB-3233: /: HTTP TRACE method is active, suggesting the host is vulnerable to XST
...
+ 1 host(s) tested

Reserve um momento para ler a saída. Você pode ver que o Nikto identifica o software do servidor, verifica cabeçalhos de segurança importantes (como X-Frame-Options), lista os métodos HTTP permitidos e relata potenciais vulnerabilidades. Essas informações são cruciais para entender a postura de segurança de um servidor.

Nesta etapa, focaremos em uma das informações mais importantes que o Nikto fornece: o banner do servidor. Um banner de servidor é uma string de texto enviada pelo servidor web em seus cabeçalhos de resposta que geralmente identifica o software do servidor e sua versão.

Atacantes usam essas informações para encontrar vulnerabilidades conhecidas associadas a uma versão de software específica. Nos resultados da sua varredura da etapa anterior, você deve ver uma linha que começa com + Server:.

+ Server: SimpleHTTP/0.6 Python/3.10.12

Esta linha nos diz que o servidor web é SimpleHTTP/0.6 rodando em Python/3.10.12.

Para praticar o isolamento de informações específicas de uma saída maior, você pode executar a varredura novamente e usar o comando grep para filtrar os resultados, exibindo apenas a linha que contém "Server".

Execute o seguinte comando:

nikto -h localhost -p 8000 | grep Server

Este comando envia a saída do Nikto para o grep, que então filtra e exibe apenas as linhas que contêm a palavra "Server". Esta é uma técnica muito útil para analisar grandes arquivos de log ou saídas de comandos. Sua saída deve ser a única linha identificando o servidor.

+ Server: SimpleHTTP/0.6 Python/3.10.12

Resumo

Neste laboratório, você realizou com sucesso uma varredura básica de servidor web usando o Nikto. Você aprendeu como identificar um alvo, construir um comando de varredura básico com as flags -h e -p, e executá-lo. Você também praticou a observação da saída em tempo real e o isolamento de informações específicas, como o banner do servidor, usando ferramentas como grep.

Este é apenas o começo do que o Nikto pode fazer. Ele possui uma vasta gama de opções para varreduras mais direcionadas e aprofundadas, incluindo verificações SSL, consultas ao banco de dados de vulnerabilidades e vários formatos de saída. Agora você está equipado com o conhecimento fundamental para explorar esses recursos avançados e aprimorar suas habilidades de teste de segurança web.