Introdução
Neste laboratório, você aprenderá como atacantes comprometem sistemas de autenticação web vulneráveis. Você analisará requisições de login HTTP POST padrão e configurará a ferramenta de força bruta Hydra para realizar ataques de dicionário automatizados contra o formulário de login de um portal web, visando recuperar credenciais válidas.
Ataques de força bruta envolvem a submissão sistemática de muitas senhas ou frases-senha com a esperança de, eventualmente, adivinhar a correta. Ao atacar aplicações web, os invasores frequentemente focam em formulários de login que utilizam o método HTTP POST para transmitir as credenciais do usuário. Compreender como esses ataques funcionam é crucial para proteger aplicações web e implementar mecanismos adequados de limitação de taxa (rate limiting) e bloqueio de conta.
Este é, fundamentalmente, um problema de economia de autenticação. Se a aplicação permite que os atacantes façam muitas tentativas a um custo baixo, credenciais fracas ou reutilizadas tornam-se alvos viáveis para recuperação.
Analisar os Parâmetros da Requisição de Login
Nesta etapa, você analisará a aplicação web alvo para entender como ela processa as requisições de login. Antes de lançar um ataque de força bruta, você deve identificar a URL de destino, o método HTTP utilizado, os nomes dos campos de entrada e a mensagem retornada após uma tentativa de login malsucedida.
Essa etapa de reconhecimento é fundamental, pois ferramentas como o Hydra são tão eficazes quanto o modelo de requisição que você fornece a elas. Se você interpretar o formulário incorretamente, a lógica do ataque estará errada desde o início.
Um servidor web local foi iniciado para você na porta 8080. Primeiro, vamos visualizar o código-fonte HTML da página de login para identificar os parâmetros do formulário. Você pode usar o comando curl para buscar o conteúdo da página.
curl -s http://127.0.0.1:8080/
A saída exibirá um formulário HTML simples. Observe o atributo action="/login", que nos indica para onde os dados do formulário são enviados. O atributo method="POST" indica que os dados são enviados usando uma requisição HTTP POST. Por fim, observe os atributos name dos campos de entrada: username e password.
Em seguida, você precisa simular uma tentativa de login malsucedida para ver como o servidor responde. Este é um passo crítico, pois as ferramentas de força bruta precisam saber como é uma "falha" para que possam identificar um "sucesso" quando a mensagem de erro estiver ausente.
Use o curl para enviar uma requisição POST com credenciais fictícias. A flag -X POST especifica o método HTTP, e a flag -d permite enviar os dados do formulário.
curl -X POST -d "username=testuser&password=wrongpass" http://127.0.0.1:8080/login
Você deverá ver a seguinte saída:
Invalid credentials. Please try again.
Esta string específica, Invalid credentials, é a mensagem de falha. Você usará essa frase exata mais tarde para configurar a ferramenta de força bruta.
Selecionar Listas de Palavras (Wordlists)
Nesta etapa, você preparará os dicionários (wordlists) que serão usados para o ataque de força bruta. Um ataque de dicionário baseia-se em uma lista predefinida de possíveis nomes de usuário e senhas.
Ataques de dicionário são mais rápidos do que a busca exaustiva cega porque exploram a previsibilidade humana. As pessoas não escolhem senhas de forma uniforme e aleatória.
Em vez de tentar todas as combinações possíveis de caracteres, os atacantes usam listas de palavras contendo nomes de usuário comuns (como admin, root, user) e senhas frequentemente utilizadas (como 123456, password, qwerty).
Você criará dois arquivos de texto simples no seu diretório de trabalho atual (~/project). O primeiro arquivo conterá uma lista de possíveis nomes de usuário. Use o comando echo para escrever os nomes em um arquivo chamado users.txt.
echo "root" > users.txt
echo "admin" >> users.txt
echo "test" >> users.txt
O operador > cria o arquivo e escreve a primeira linha, enquanto o operador >> adiciona as linhas subsequentes ao arquivo existente.
Em seguida, crie um arquivo chamado passwords.txt contendo uma lista de possíveis senhas.
echo "password123" > passwords.txt
echo "admin123" >> passwords.txt
echo "secret123" >> passwords.txt
echo "123456" >> passwords.txt
Você pode verificar o conteúdo das suas novas listas de palavras usando o comando cat.
cat users.txt
cat passwords.txt
Em um cenário real, testadores de penetração usam listas de palavras massivas e disponíveis publicamente, como a rockyou.txt, que contém milhões de senhas comprometidas. Para este laboratório educacional, estas pequenas listas personalizadas serão suficientes.
Configurar o Hydra para Formulário HTTP POST
Nesta etapa, você aprenderá como estruturar o comando para o Hydra, um poderoso cracker de login de rede. O Hydra suporta inúmeros protocolos, incluindo HTTP, FTP, SSH e outros.
Para atacar um formulário de login web, o Hydra usa um módulo específico chamado http-post-form. Este módulo requer uma string formatada cuidadosamente para entender como interagir com a aplicação web alvo.
A sintaxe para o módulo http-post-form é a seguinte: "<caminho>:<parâmetros do formulário>:<string de falha>"
Vamos detalhar como isso se aplica às informações que você coletou na Etapa 1. Primeiro, o caminho, que é a URL onde o formulário é enviado; no nosso caso, é /login. Em seguida, os parâmetros do formulário, representando os dados enviados na requisição POST. Você descobriu que os campos eram username e password. O Hydra usa os marcadores especiais ^USER^ e ^PASS^ para injetar as palavras das suas listas, então a string de parâmetros torna-se username=^USER^&password=^PASS^. Finalmente, a string de falha é o texto que aparece na página quando um login falha, que você identificou como Invalid credentials.
Combinando essas três partes com dois-pontos, a string de configuração do módulo torna-se: "/login:username=^USER^&password=^PASS^:Invalid credentials"
Antes de executar o ataque real, você pode explorar a documentação de ajuda integrada do Hydra para o módulo http-post-form para entender melhor suas capacidades. Execute o seguinte comando para visualizar a ajuda específica do módulo:
hydra -U http-post-form
Este comando exibe instruções detalhadas e exemplos sobre como formatar a string do módulo, o que é uma excelente referência quando você encontrar formulários de login mais complexos no futuro.
Executar o Ataque de Força Bruta
Nesta etapa, você combinará tudo o que aprendeu para executar o ataque de dicionário automatizado contra o servidor web local.
Você usará o comando hydra com várias flags:
-L users.txt: Especifica o arquivo contendo a lista de nomes de usuário.-P passwords.txt: Especifica o arquivo contendo a lista de senhas.-s 8080: Especifica a porta de destino.127.0.0.1: O endereço IP do servidor alvo.http-post-form: O módulo de protocolo a ser usado."/login:username=^USER^&password=^PASS^:Invalid credentials": A string de configuração do módulo que você construiu na etapa anterior.
Execute o seguinte comando no seu terminal para iniciar o ataque de força bruta:
hydra -L users.txt -P passwords.txt -s 8080 127.0.0.1 http-post-form "/login:username=^USER^&password=^PASS^:Invalid credentials"
O Hydra começará a testar todas as combinações de nomes de usuário e senhas das suas listas. Como as listas são pequenas e o servidor é local, o ataque terminará muito rapidamente.
Você deverá ver uma saída semelhante a esta:
Hydra v9.2 (c) 2021 by van Hauser/THC - Please do not use in military or secret service organizations, or for illegal purposes.
Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2026-10-25 10:00:00
[DATA] max 12 tasks per 1 server, overall 12 tasks, 12 login tries (l:3/p:4), ~1 tries per task
[DATA] attacking http-post-form://127.0.0.1:8080/login:username=^USER^&password=^PASS^:Invalid credentials
[8080][http-post-form] host: 127.0.0.1 login: admin password: secret123
1 of 1 target successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2026-10-25 10:00:01
Observe a linha destacada (ou que indica explicitamente o sucesso): [8080][http-post-form] host: 127.0.0.1 login: admin password: secret123. O Hydra identificou com sucesso que a combinação do nome de usuário admin e da senha secret123 não retornou a string "Invalid credentials", o que significa que o login foi bem-sucedido.
Resumo
Neste laboratório, você aprendeu com sucesso como analisar e atacar um sistema de autenticação web vulnerável. Você começou inspecionando um formulário de login HTTP POST para identificar o caminho de destino, os parâmetros de entrada e as mensagens de falha. Em seguida, criou listas de palavras personalizadas para um ataque de dicionário. Finalmente, configurou e executou a ferramenta de força bruta Hydra para automatizar as tentativas de login e recuperar com sucesso as credenciais válidas.
Compreender essas técnicas destaca a importância de implementar medidas de segurança robustas, como bloqueio de contas, CAPTCHAs e autenticação de múltiplos fatores (MFA), para proteger aplicações web contra ataques automatizados de força bruta.


