Escanear um Virtual Host Específico com Nikto

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.

Uma configuração comum de servidor web é o virtual hosting (hospedagem virtual), onde um único servidor com um endereço IP hospeda múltiplos websites (por exemplo, site1.example.com e site2.example.com). Ao escanear o endereço IP do servidor diretamente, um scanner como o Nikto pode testar apenas o website padrão configurado no servidor, perdendo completamente os outros sites.

Neste laboratório, você aprenderá a usar a opção -vhost do Nikto para direcionar especificamente um dos virtual hosts no servidor, garantindo que seu scan seja preciso e focado.

Identificar um servidor hospedando múltiplos websites em um único IP

Nesta etapa, você verificará que o servidor web em nosso ambiente está hospedando dois websites diferentes no mesmo endereço IP (127.0.0.1). Podemos fazer isso enviando requisições HTTP com diferentes cabeçalhos Host usando o comando curl. O cabeçalho Host informa ao servidor web qual website o cliente deseja acessar.

Primeiro, vamos enviar uma requisição para site1.labex.io. A opção --header "Host: site1.labex.io" informa ao curl para enviar o cabeçalho de host especificado.

curl --header "Host: site1.labex.io" http://127.0.0.1

Você deverá ver o conteúdo HTML do primeiro site:

<html><body><h1>Welcome to Site 1</h1></body></html>

Em seguida, vamos enviar uma requisição para site2.labex.io alterando o cabeçalho Host.

curl --header "Host: site2.labex.io" http://127.0.0.1

Desta vez, você verá o conteúdo do segundo site:

<html><body><h1>This is Site 2</h1><p>This site has a test.txt file.</p></body></html>

Isso confirma que nosso servidor em 127.0.0.1 está servindo conteúdo diferente com base no nome do host, que é a definição de virtual hosting.

Encontrar o nome do host do virtual host alvo específico

Nesta etapa, confirmaremos os nomes de host que estão configurados para o nosso servidor local. Em um cenário do mundo real, você usaria técnicas de reconhecimento como enumeração de DNS ou análise de certificados SSL para encontrar virtual hosts. Para este laboratório, os nomes de host foram pré-configurados no arquivo /etc/hosts. Este arquivo é usado pelo sistema operacional para mapear nomes de host para endereços IP.

Vamos examinar o conteúdo do arquivo /etc/hosts usando o comando cat para ver os mapeamentos.

cat /etc/hosts

A saída mostrará os mapeamentos padrão do localhost, mais as duas entradas personalizadas que adicionamos para nossos virtual hosts:

127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
127.0.0.1 site1.labex.io
127.0.0.1 site2.labex.io

A partir desta saída, podemos confirmar que site1.labex.io e site2.labex.io são os nomes de host que podemos usar para nosso scan direcionado. Vamos direcionar site2.labex.io nas próximas etapas.

Usar a opção -vhost para especificar o nome do host alvo

Nesta etapa, você aprenderá sobre a opção do Nikto usada para escanear um virtual host específico. Por padrão, nikto -h 127.0.0.1 escanearia o primeiro virtual host configurado (site1.labex.io). Para dizer ao Nikto para escanear um virtual host diferente, devemos usar a opção -vhost (ou -host+).

Esta opção instrui o Nikto a usar o nome de host fornecido no cabeçalho Host de todas as suas requisições HTTP, garantindo que o servidor web direcione as requisições para o website correto.

A sintaxe é: nikto -h <ENDEREÇO_IP> -vhost <NOME_DO_HOST>

Vamos fazer um teste rápido sem executar um scan completo. Podemos usar a opção -Display V para imprimir a saída detalhada (verbose), que nos mostrará a configuração efetiva para o scan. Vamos direcionar site2.labex.io.

nikto -h 127.0.0.1 -vhost site2.labex.io -Display V

A saída mostrará detalhes sobre a configuração do scan. Procure pelo valor do cabeçalho Host para confirmar que ele está configurado corretamente.

...
---------------------------------------------------------------------------
- Nikto 2.x
---------------------------------------------------------------------------
...
- Scan Options:
    ...
    Host -> 127.0.0.1
    ...
    VHost -> site2.labex.io
...
- Headers:
    ...
    Host: site2.labex.io
    ...
---------------------------------------------------------------------------
+ 1 host(s) para testar

A saída mostra claramente que o Nikto usará Host: site2.labex.io em suas requisições, que é exatamente o que queremos.

Executar o scan contra o IP do servidor com a flag vhost

Agora que você entende como a opção -vhost funciona, é hora de executar o scan completo contra nosso virtual host alvo, site2.labex.io.

Execute o seguinte comando no seu terminal. O scan levará alguns momentos para ser concluído, pois o Nikto executa seus vários testes.

nikto -h 127.0.0.1 -vhost site2.labex.io

Após o início do scan, você verá uma saída semelhante à seguinte. Observe que a saída mostra que o Target Host é site2.labex.io, confirmando que estamos escaneando o virtual host correto.

- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    site2.labex.io
+ Target Port:        80
+ Start Time:         ...
---------------------------------------------------------------------------
+ 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
+ No CGI directories found (use '-C all' to force check all possible dirs)
+ /test.txt: A text file was found.
+ 7 requests: 0 error(s) and 5 item(s) reported on remote host
+ End Time:           ...
+ 1 host(s) tested

Note a linha + /test.txt: A text file was found.. Este arquivo existe apenas em site2.labex.io, o que confirma ainda mais que nosso scan foi direcionado corretamente.

Confirmar que os resultados são específicos para o vhost alvo

Nesta etapa final, executaremos outro scan, mas desta vez sem a flag -vhost, para demonstrar a diferença nos resultados. Isso provará que a opção -vhost é essencial para escanear com precisão um site específico em um ambiente de hospedagem virtual.

Execute um scan Nikto padrão contra o endereço IP do servidor:

nikto -h 127.0.0.1

Observe a saída deste novo scan.

- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    localhost
+ Target Port:        80
+ Start Time:         ...
---------------------------------------------------------------------------
+ Server: Apache/2.4.52 (Ubuntu)
...
(outras descobertas)
...
+ End Time:           ...
+ 1 host(s) testados

Compare esta saída com o scan da etapa anterior. Você notará duas diferenças principais:

  1. O Target Hostname agora é localhost (ou 127.0.0.1), que é o padrão do servidor.
  2. A descoberta + /test.txt: A text file was found. está ausente. Isso ocorre porque test.txt não existe no site padrão (site1.labex.io), e este scan não teve como alvo site2.labex.io.

Esta comparação mostra claramente que, sem -vhost, você teria perdido vulnerabilidades e informações específicas de site2.labex.io.

Resumo

Neste laboratório, você aprendeu uma técnica crítica para a varredura de vulnerabilidades em servidores web. Agora você entende o que é hospedagem virtual e por que ela requer tratamento especial durante uma avaliação de segurança.

Você praticou:

  • Usar curl com um cabeçalho Host personalizado para inspecionar manualmente diferentes sites no mesmo IP.
  • Identificar o propósito da opção -vhost do Nikto.
  • Executar um scan direcionado contra um virtual host específico usando nikto -h <IP> -vhost <HOSTNAME>.
  • Comparar os resultados de um scan direcionado e um scan padrão para entender a importância dessa técnica.

Esta habilidade é essencial para qualquer testador de penetração ou analista de segurança, garantindo que todas as aplicações web em um servidor sejam testadas completamente, não apenas a padrão.