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

login-page

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

form-code-source

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?

cookie-session

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

hydra-result

Le mot de passe trouvé est password

Sources

You might also enjoy