DVWA - Challenge Login avec Hydra
Cet article a pour objectif de sensibiliser le lecteur à l’importance des mots de passes fort pour protéger l’accès aux applications.
L’exemple été réalisé sur l’application web vulnérable DVWA en local. Il consiste en un write-up d’une attaque par brute-force sur une page web de login en employant le logiciel Hydra
Installation DVWA
Vous pouvez récupérer une image docker de DVWA à l’adresse suivante :
https://hub.docker.com/r/vulnerables/web-dvwa
- Pour la lancer :
docker run --rm -it -p 80:80 vulnerables/web-dvwa
- Credentials par défaut :
- Username: admin
- Password: password
Phase de reconnaissance
Page de login
Passage des paramètres
En regardant le code source la page, on peut voir que les paramètres sont passés par GET, ce qui nous sera utile pour configurer Hydra ainsi que les noms des champs : username et password
Récupérer le cookie de session
DVWA nécessite d’être connecté pour pouvoir être utilisé. Il faut alors récupérer le cookie de session, que l’on trouve dans la partie Storage/Cookies du navigateur.
On peut également observer la présence d’un second cookie indiquant le niveau de sécurité de l’application, ici low
Remarques : si vous ne lancez pas Hydra en lui spécifiant le cookie de session, alors la page d’authentification cible sera la page de connexion à DVWA au lieu du challenge. Plus d’info par ici : www.it-swarm-fr.com - Pourquoi Hydra renvoie-t-il 16 mots de passe valides alors qu’aucun n’est valide?
Exploitation
Maintenant, nous avons toutes les informations permettant de lancer une attaque par brute-force.
hydra 0.0.0.0 -l admin -P rockyou.txt http-get-form "/vulnerabilities/brute/:username=^USER^&password=^PASS^&Login=Login:F=Username and/or password incorrect.:H=Cookie:security=low; PHPSESSID=1bnn5p1207ll8vphurqbel9r97"
Explication
- -l admin
On part du principe que l’utilisateur cible est admin, mais on pourrait aussi faire du brute-force dessus.
- -P rockyou.txt
Indique le dictionnaire à utiliser pour cracker le mot de passe
- http-get-form
Inique la méthode de transmission des paramètres. Comme vu durant la phase de reconnaissance, les paramètres sont passés par GET
- Pour la string
- ^USER^ indique à Hydra qu’il doit remplacer par le user, ici admin
- ^PASS^ indique à Hydra qu’il doit remplacer par le password. Vu que nous avons indiqué un dictionnaire, Hydra va remplacer par les mots du dictionnaire
F=Username and/or password incorrect.message qui sera affiché par la page en cas de login incorrect.H=Cookie:security=low; PHPSESSID=1bnn5p1207ll8vphurqbel9r97"permet d’indiquer des headers.
Résultats
Le mot de passe trouvé est password
Sources
- Installation docker : https://hub.docker.com/r/vulnerables/web-dvwa
- Tutoriels Kali sur Hydra : https://www.kali-linux.fr/hacking/tutohydrabruteforce
- Autres write-up :