Introduction
Dans le domaine de la cybersécurité, la compréhension des structures de bases de données est une étape essentielle pour évaluer la posture de sécurité des applications web. Les vulnérabilités d'injection SQL peuvent exposer des informations sensibles, et des outils comme sqlmap sont indispensables pour automatiser la découverte et l'exploitation de telles failles.
Ce laboratoire se concentre sur un aspect spécifique, mais crucial, des capacités de sqlmap : l'énumération des tables au sein d'une base de données. Après avoir identifié les points d'injection SQL potentiels et listé les bases de données disponibles, l'étape logique suivante consiste à approfondir une base de données spécifique pour comprendre sa structure de tables. Cette connaissance est vitale pour une exploitation ultérieure, telle que l'extraction de données sensibles à partir de tables spécifiques.
À la fin de ce laboratoire, vous maîtriserez l'utilisation de sqlmap pour cibler une base de données particulière et lister toutes ses tables associées, une compétence fondamentale pour tout testeur d'intrusion ou passionné de sécurité.
Sélectionner une base de données cible dans la liste énumérée
Dans cette étape, nous allons simuler une énumération préalable des bases de données et en sélectionner une sur laquelle nous concentrer. Dans un scénario réel, vous auriez déjà exécuté sqlmap avec le drapeau --dbs pour lister toutes les bases de données disponibles. Pour ce laboratoire, nous supposerons que vous avez identifié une base de données nommée acuart comme cible.
Tout d'abord, assurons-nous que sqlmap est disponible. S'il n'est pas installé, vous pouvez l'installer en utilisant sudo apt update && sudo apt install sqlmap -y.
Nous utiliserons une URL vulnérable connue comme cible. À des fins de démonstration, nous utiliserons http://testphp.vulnweb.com/listproducts.php?cat=1.
Pour commencer, listons les bases de données disponibles sur notre cible. Cette commande prendra un certain temps car sqlmap effectue ses vérifications.
sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" --dbs
Vous verrez une sortie similaire à celle-ci, listant les bases de données :
---
[INFO] fetching database names
[INFO] the back-end DBMS is MySQL
...
available databases [X]:
[*] acuart
[*] information_schema
[*] mysql
[*] performance_schema
...
À partir de cette liste, nous choisirons acuart pour une énumération plus poussée.
Utiliser le drapeau -D pour spécifier la base de données
Dans cette étape, nous allons apprendre comment indiquer à sqlmap avec quelle base de données spécifique nous voulons interagir. Ceci est réalisé en utilisant le drapeau -D (ou --db), suivi du nom de la base de données.
En continuant à partir de l'étape précédente, où nous avons identifié acuart comme notre base de données cible, nous allons maintenant demander à sqlmap de concentrer ses opérations sur cette base de données particulière.
La syntaxe générale pour spécifier une base de données est la suivante :
sqlmap -u "URL_CIBLE" -D "NOM_BASE_DE_DONNEES" [AUTRES_DRAPEAUX]
Pour notre laboratoire, nous utiliserons acuart comme nom de base de données. Nous ne listons pas encore les tables, nous définissons simplement le contexte pour sqlmap.
Exécutez la commande suivante dans votre terminal :
sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" -D acuart --current-db
Cette commande indiquera à sqlmap de cibler la base de données acuart et tentera ensuite d'identifier la base de données actuelle à laquelle elle est connectée, confirmant ainsi notre sélection. La sortie confirmera que acuart est la base de données ciblée.
---
[INFO] fetching current database
...
current database: 'acuart'
...
Utiliser le drapeau --tables pour lister les tables
Maintenant que nous avons spécifié la base de données cible à l'aide du drapeau -D, l'étape logique suivante consiste à lister les tables présentes dans cette base de données. C'est là qu'intervient le drapeau --tables.
Le drapeau --tables demande à sqlmap d'énumérer toutes les tables présentes dans la base de données actuellement sélectionnée. Lorsqu'il est combiné avec le drapeau -D, il offre un moyen puissant de cartographier la structure d'une base de données spécifique.
La syntaxe générale pour lister les tables dans une base de données spécifique est la suivante :
sqlmap -u "URL_CIBLE" -D "NOM_BASE_DE_DONNEES" --tables
Pour notre laboratoire, nous combinerons l'URL cible, la base de données acuart et le drapeau --tables.
Exécutez la commande suivante dans votre terminal :
sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" -D acuart --tables
Cette commande lancera le processus par lequel sqlmap identifiera et listera toutes les tables de la base de données acuart. Cette opération peut prendre un certain temps en fonction de la complexité et de la taille de la base de données.
Exécuter la commande pour énumérer les tables
Dans cette étape, nous allons exécuter la commande sqlmap complète qui combine tous les drapeaux que nous avons appris jusqu'à présent pour énumérer les tables de notre base de données cible spécifique.
Nous utiliserons l'URL cible http://testphp.vulnweb.com/listproducts.php?cat=1, spécifierons la base de données acuart avec -D acuart, et demanderons à sqlmap de lister ses tables avec --tables.
Ouvrez votre terminal et exécutez la commande suivante :
sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" -D acuart --tables
sqlmap va maintenant effectuer ses vérifications et tenter de récupérer les noms des tables. Vous verrez divers messages [INFO] au fur et à mesure que sqlmap progresse dans ses tests.
Après un certain temps, sqlmap présentera une liste des tables trouvées dans la base de données acuart. La sortie ressemblera à ceci :
---
[INFO] fetching tables for database 'acuart'
...
Database: acuart
[X] articles
[X] carts
[X] categories
[X] guestbook
[X] pictures
[X] products
[X] users
...
Cette sortie confirme que sqlmap a réussi à énumérer les tables de la base de données acuart.
Analyser la liste des noms de tables retournée
Dans cette dernière étape, nous allons analyser la sortie de la commande sqlmap précédente. Comprendre la liste des noms de tables retournée est crucial pour planifier les étapes d'exploitation ultérieures.
Lorsque sqlmap énumère avec succès les tables, il les présente dans une liste claire et organisée. Pour la base de données acuart, vous auriez dû voir des tables telles que articles, carts, categories, guestbook, pictures, products et users.
Chacun de ces noms de tables donne un indice sur les données stockées dans la base de données. Par exemple :
users: Cette table contient très probablement les identifiants des utilisateurs (noms d'utilisateur, mots de passe, e-mails), qui sont souvent une cible principale pour les attaquants.products: Cette table contiendrait des informations sur les produits vendus sur le site web.articles,guestbook,categories: Ces tables contiendraient probablement des données relatives au contenu.
La présence d'une table users est particulièrement significative, car elle contient souvent des informations sensibles. Dans un test de pénétration réel, votre prochaine étape consisterait généralement à énumérer les colonnes de la table users (en utilisant --columns) puis à extraire les données de ces colonnes (en utilisant --dump).
Ce laboratoire vous a doté de la compétence fondamentale d'énumération des tables d'une base de données spécifique à l'aide de sqlmap, une étape critique dans toute évaluation d'injection SQL.
Résumé
Dans ce laboratoire, vous avez appris avec succès comment énumérer les tables d'une base de données spécifique à l'aide de sqlmap. Vous avez commencé par comprendre l'importance de sélectionner une base de données cible, puis vous avez utilisé le drapeau -D pour la spécifier, et enfin le drapeau --tables pour lister toutes les tables associées.
Vous avez exécuté la commande sqlmap complète pour effectuer l'énumération et avez analysé la liste des noms de tables retournée, en comprenant leur signification potentielle dans une évaluation de sécurité. Cette compétence est un élément fondamental dans le processus d'identification et d'exploitation des vulnérabilités d'injection SQL, vous permettant de cartographier les structures de base de données et de planifier une extraction de données ultérieure.
En maîtrisant cette technique, vous êtes désormais mieux équipé pour naviguer et comprendre les structures de données sous-jacentes des applications web, une étape cruciale dans tout engagement de test de pénétration.
