Revue des options HTTP POST avec -U
Dans cette étape, nous allons explorer les options HTTP POST disponibles dans Hydra en utilisant le drapeau -U
. Le drapeau -U
est utilisé pour spécifier un nom d'utilisateur lors de l'envoi d'une requête POST. Cela est particulièrement utile lorsque le service cible nécessite qu'un nom d'utilisateur soit envoyé dans le cadre des données POST.
Avant de plonger dans l'exemple pratique, comprenons le concept de base des requêtes HTTP POST. HTTP POST est une méthode utilisée pour envoyer des données à un serveur afin de créer ou de mettre à jour une ressource. Contrairement aux requêtes GET, les requêtes POST transportent les données dans le corps de la requête, ce qui les rend adaptées pour envoyer de plus grandes quantités de données, telles que les soumissions de formulaires.
Hydra est un outil puissant pour forcer des identifiants de connexion (brute-force login credentials). Lorsque nous ciblons des services qui utilisent HTTP POST pour l'authentification, nous devons fournir à Hydra les informations nécessaires, y compris les champs de nom d'utilisateur et de mot de passe, ainsi que l'URL à laquelle la requête POST doit être envoyée.
L'option -U
dans Hydra vous permet de spécifier un seul nom d'utilisateur à utiliser pour toutes les tentatives de connexion. Cela est utile lorsque vous connaissez déjà le nom d'utilisateur et que vous n'avez qu'à forcer le mot de passe.
Voyons comment utiliser l'option -U
avec un exemple simple. Supposons que nous voulions attaquer une application web qui utilise HTTP POST pour la connexion, et que nous sachions que le nom d'utilisateur est testuser
. Nous pouvons utiliser la commande Hydra suivante :
hydra -l testuser -P ~/project/password.txt "/login.php:username=^USER^&password=^PASS^:F=Invalid username or password" < target_ip > http-post-form
Dans cette commande :
hydra
: La commande pour invoquer Hydra.
-l testuser
: Spécifie le nom d'utilisateur comme testuser
. Notez que nous utilisons -l
au lieu de -U
ici. -l
spécifie un seul nom d'utilisateur, tandis que -U
spécifie un fichier contenant une liste de noms d'utilisateurs.
-P ~/project/password.txt
: Spécifie le chemin vers le fichier de liste de mots de passe. Assurez-vous d'avoir un fichier password.txt
dans votre répertoire ~/project
. Vous pouvez en créer un en utilisant nano
:
nano ~/project/password.txt
Ajoutez quelques mots de passe courants au fichier, un mot de passe par ligne, par exemple :
password
123456
qwerty
Enregistrez le fichier et quittez nano
.
<target_ip>
: Remplacez ceci par l'adresse IP du serveur cible. Pour ce laboratoire (lab), vous devrez le remplacer par l'adresse IP réelle du serveur que vous attaquez. Nous supposerons que l'adresse IP cible est 127.0.0.1
à des fins de démonstration.
http-post-form
: Spécifie que nous utilisons le module de formulaire HTTP POST.
"/login.php:username=^USER^&password=^PASS^:F=Invalid username or password"
: C'est la partie la plus importante. Elle indique à Hydra comment construire la requête POST.
/login.php
: L'URL à laquelle la requête POST doit être envoyée.
username=^USER^&password=^PASS^
: Les données POST. ^USER^
et ^PASS^
sont des espaces réservés que Hydra remplacera respectivement par le nom d'utilisateur et le mot de passe.
F=Invalid username or password
: Cela indique à Hydra quelle chaîne de caractères rechercher dans la réponse pour déterminer si la tentative de connexion a échoué. Si Hydra trouve cette chaîne, il sait que la tentative de connexion a été infructueuse.
Maintenant, exécutons la commande avec l'adresse IP d'exemple :
hydra -l testuser -P ~/project/password.txt 127.0.0.1 http-post-form "/login.php:username=^USER^&password=^PASS^:F=Invalid username or password"
Cette commande tentera de forcer le mot de passe du compte testuser
en utilisant les mots de passe du fichier password.txt
. Hydra enverra des requêtes HTTP POST à l'URL /login.php
avec les champs de nom d'utilisateur et de mot de passe configurés en conséquence. Si Hydra trouve un mot de passe valide, il l'affichera à l'écran.
Cet exemple démontre l'utilisation de base de l'option -l
avec le module http-post-form
. Dans les étapes suivantes, nous explorerons des options et des techniques plus avancées pour attaquer les formulaires HTTP POST avec Hydra.