Dans cette étape, vous allez identifier et analyser un formulaire web cible pour une attaque de « password spraying ». Nous allons utiliser une application web délibérément vulnérable exécutée sur http://localhost:8080
pour cet exercice. L'attaque de « password spraying » consiste à tester quelques mots de passe courants sur de nombreux comptes utilisateur. Il est donc essentiel de comprendre la structure du formulaire de connexion avant de lancer l'attaque.
-
Tout d'abord, vérifiez que l'application web cible est en cours d'exécution :
curl -I http://localhost:8080/login
Le paramètre -I
indique à curl de ne récupérer que les en-têtes HTTP. Vous devriez voir un statut 200 OK
confirmant que la page de connexion est accessible. Si vous obtenez une erreur de connexion, assurez-vous que le serveur web est en cours d'exécution avant de continuer.
-
Examinez la structure du formulaire de connexion en affichant le code source de la page :
curl http://localhost:8080/login | grep -A5 -B5 "form"
Cette commande récupère le contenu HTML et affiche 5 lignes avant et après toutes les balises <form>
. Recherchez l'attribut action
du formulaire (où les données sont envoyées) et les noms des champs de saisie - ces derniers sont généralement appelés username
et password
, mais peuvent varier.
-
Créez un fichier de requête de test pour documenter les paramètres du formulaire :
nano form_test.txt
Ajoutez ce contenu pour enregistrer les informations clés dont Hydra aura besoin :
Target URL: http://localhost:8080/login
Method: POST
Username field: username
Password field: password
Failure indicator: "Invalid credentials"
L'indicateur d'échec permet à Hydra de reconnaître quand les tentatives de connexion échouent. Nous utiliserons ce fichier plus tard pour configurer notre attaque.
-
Testez le formulaire manuellement avec une paire d'identifiants unique :
curl -X POST -d "username=admin&password=wrongpass" http://localhost:8080/login -v
Le paramètre -X POST
spécifie la méthode HTTP, tandis que -d
envoie les données du formulaire. Le paramètre -v
affiche une sortie détaillée afin que vous puissiez vérifier la réponse « Invalid credentials ». Cela confirme que le formulaire fonctionne comme prévu en cas d'échec de connexion.
-
Vérifiez les politiques de verrouillage de compte en envoyant 5 requêtes rapides :
for i in {1..5}; do
curl -X POST -d "username=admin&password=wrong$i" http://localhost:8080/login -s -o /dev/null -w "Attempt $i: %{http_code}\n"
done
Cette boucle envoie 5 tentatives d'échec rapides. Vérifiez si le code d'état HTTP passe de 200 (succès) à 403 (interdit), ce qui indiquerait des protections contre le verrouillage. Les applications réelles ont souvent ces mesures de sécurité, mais notre environnement de test n'en a pas.