Realizar Testes de Penetração em Aplicações Web com Nmap

NmapBeginner
Pratique Agora

Introdução

Neste laboratório, aprenderemos sobre testes de penetração em aplicações web, um aspecto crucial da segurança da informação. As aplicações web são amplamente utilizadas em diversos domínios, tornando sua segurança uma prioridade máxima. O laboratório visa proporcionar experiência prática na identificação e exploração de vulnerabilidades em uma aplicação web vulnerável hospedada em uma máquina alvo. O objetivo é obter uma compreensão das vulnerabilidades comuns em aplicações web e das técnicas utilizadas para explorá-las.

Configuração do Ambiente

Nesta etapa, configuraremos o ambiente de laboratório e nos familiarizaremos com as ferramentas e o sistema alvo.

Primeiro, precisamos obter o ID da imagem do Kali Linux, que pode ser exibido clicando duas vezes no terminal xfce na área de trabalho e executando o seguinte comando:

docker images

Precisamos iniciar o contêiner do Kali Linux, que será nossa máquina de ataque. Abra um terminal e execute o seguinte comando:

docker run -ti --network host image-id bash

Este comando iniciará um novo contêiner do Kali Linux e permitirá que você interaja com seu shell.

Em seguida, abrindo um novo terminal, precisamos iniciar a máquina alvo, que é um sistema vulnerável chamado Metasploitable2. Execute o seguinte comando para iniciar a máquina virtual:

sudo virsh start Metasploitable2

Aguarde a inicialização da máquina alvo; isso pode levar de 1 a 3 minutos.

Assim que a máquina virtual estiver em execução, verifique se você consegue realizar um ping na máquina alvo a partir do contêiner do Kali Linux:

ping 192.168.122.102

Reconhecimento e Coleta de Informações

Nesta etapa, realizaremos o reconhecimento e coletaremos informações sobre o sistema alvo usando várias técnicas.

Primeiro, escaneamos a máquina alvo usando a ferramenta nmap dentro do contêiner do Kali Linux para identificar portas abertas e serviços em execução:

nmap -sV -sC -oN nmap_scan.txt 192.168.122.102

Este comando realizará um scan de conexão TCP (-sC) para determinar quais portas estão abertas e um scan de versão (-sV) para identificar o serviço e a versão em execução em cada porta aberta. A saída será salva em um arquivo chamado nmap_scan.txt (-oN).

O escaneamento leva algum tempo. Após a conclusão, revise o arquivo nmap_scan.txt para identificar potenciais vetores de ataque com base nas portas e serviços abertos usando o comando cat:

cat nmap_scan.txt

Em seguida, realizaremos a enumeração de diretórios e arquivos no servidor web alvo usando a ferramenta gobuster:

gobuster dir -u http://192.168.122.102 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 30 -o gobuster_scan.txt

Este comando fará um brute-force de diretórios e arquivos no servidor web alvo usando a wordlist especificada (-w). A opção -t especifica o número de threads simultâneas, e a opção -o salva a saída em um arquivo chamado gobuster_scan.txt.

Analise o arquivo gobuster_scan.txt para identificar diretórios ou arquivos interessantes que possam fornecer informações adicionais ou vetores de ataque.

Exploração de Vulnerabilidades

Nesta etapa, tentaremos explorar as vulnerabilidades identificadas na etapa anterior.

Com base nas informações coletadas nos scans do nmap e gobuster, identifique potenciais vulnerabilidades no sistema alvo. O Metasploitable2 inclui a aplicação de treinamento vulnerável Mutillidae, portanto, nesta etapa, testaremos uma página real dessa aplicação em vez de usar uma URL genérica.

Uma vulnerabilidade comum encontrada em aplicações web é a injeção de SQL (SQL injection). A página user-info.php no Mutillidae aceita o parâmetro username na query string, o que nos dá um alvo concreto para o sqlmap dentro do contêiner do Kali Linux.

sqlmap -u "http://192.168.122.102/mutillidae/index.php?page=user-info.php&username=admin&password=admin&user-info-php-submit-button=View+Account+Details" -p username --batch --risk=3 --level=5 --random-agent --dbs

Este comando testa um endpoint real do Mutillidae na VM alvo. A opção -u fornece a URL vulnerável completa, -p username indica ao sqlmap em qual parâmetro focar, --batch executa sem interação, --risk=3 e --level=5 habilitam testes mais profundos, --random-agent rotaciona a string do user-agent e --dbs solicita ao sqlmap que enumere os nomes dos bancos de dados quando a exploração for bem-sucedida.

Dependendo da vulnerabilidade que você está tentando explorar, pode ser necessário usar ferramentas ou técnicas diferentes. Consulte a documentação e os recursos específicos para a vulnerabilidade e a ferramenta em questão.

Pós-Exploração e Escalonamento de Privilégios

Nesta etapa, usaremos a exposição de serviço descoberta durante o reconhecimento para confirmar o acesso ao shell no sistema alvo e capturar evidências básicas de pós-exploração.

O scan do nmap no Metasploitable2 geralmente mostra a porta TCP 1524 aberta. Nesta VM, esse serviço fornece um shell root, então podemos nos conectar diretamente a ele a partir do contêiner do Kali Linux, em vez de assumir que um reverse shell separado já exista.

Execute o seguinte comando no contêiner do Kali Linux:

printf 'id\nuname -a\nexit\n' | nc 192.168.122.102 1524

Isso envia três comandos para o serviço de shell exposto na VM alvo. O comando id confirma a conta que o serviço lhe concede, uname -a registra as informações do kernel e exit fecha o shell de forma limpa após a saída ser impressa no seu terminal.

Se a conexão funcionar, você deverá ver uma saída que inclui uid=0(root) e os detalhes do kernel do Metasploitable2. Essa saída é suficiente para demonstrar o sucesso do acesso ao shell durante a fase de pós-exploração.

Em uma avaliação real, você documentaria esse serviço exposto como uma descoberta crítica, pois ele concede acesso privilegiado imediato sem a necessidade de qualquer cadeia de exploração adicional.

Resumo

Neste laboratório, aprendemos sobre testes de penetração em aplicações web e obtivemos experiência prática na identificação e exploração de vulnerabilidades em uma aplicação web vulnerável hospedada em uma máquina alvo. Cobrimos reconhecimento, enumeração de aplicações web, testes de injeção de SQL com sqlmap e validação básica de pós-exploração.

O laboratório forneceu um ambiente controlado para praticar cenários do mundo real e desenvolver habilidades em segurança de aplicações web. Seguindo as etapas, aprendemos como configurar o ambiente de laboratório, realizar reconhecimento e coleta de informações, testar um endpoint real do Mutillidae para injeção de SQL e confirmar o acesso ao shell através de um serviço exposto no sistema alvo.

Este laboratório nos equipou com conhecimento prático e experiência em testes de penetração em aplicações web, o que é essencial para proteger aplicações web e identificar potenciais vulnerabilidades antes que possam ser exploradas por agentes maliciosos.