Kali-linux distribution GNU/Linux spécialisée dans l'audit et le pentest.
Kali-linux.fr Communauté française de kali-linux
comprendre sqlmap

Salut les amis, nous allons faire nos premiers pas avec sqlmap pour la détection et l’exploitation des failles injection sql (sql injection). SQLmap est un outil incontournable permettant d’automatiser bon nombre de taches de bugbounty ou de pentest.

Tout au long de cet article nous apprendrons à utiliser sqlmap grâce divers tests pour l’énumération d’utilisateurs, l’énumération de bases de données, le dump de tables…etc.

Introduction à Sqlmap

Sqlmap est un outil de test de pénétration open source qui automatise le processus de détection et d’exploitation des failles d’injection SQL.

Il possède un puissant moteur de détection, de nombreuses fonctionnalités lui permettant la prise d’empreintes de la base de données, la récupération des données de la base de données, l’accès au système de fichiers sous-jacent et à l’exécution de commandes sur le système d’exploitation.

Il implémente différentes techniques afin d’identifier la présence d’une injection sql:

  • Boolean-based blind : sqlmap remplace ou ajoute au paramètre affecté dans la requête HTTP, une chaîne d’instruction SQL syntatiquement valide contenant un SELECTsous-instruction, ou toute autre instruction SQL dont l’utilisateur souhaite récupérer la sortie.
  • Error-based : sqlmap remplace ou ajoute au paramètre affecté une instruction provoquant un message d’erreur spécifique à la base de données et analyse les en-têtes et le corps de la réponse HTTP à la recherche des messages d’erreur du SGBD contenant la chaîne de caractères prédéfinie injectée et la sortie de l’instruction de sous-requête
  • UNION query : sqlmap ajoute au paramètre affecté une instruction SQL syntaxiquement valide commençant par un UNION ALL SELECT.
  • Stacked queries : également connues sous le nom de support piggy : sqlmap teste si l’application Web prend en charge les requêtes empilées, puis, au cas où elle prendrait en charge, il ajoute au paramètre affecté dans la requête HTTP, un point-virgule ( ;) suivi de l’instruction SQL à exécuter.
  • Time-based blind : sqlmap remplace ou ajoute au paramètre affecté dans la requête HTTP, une chaîne d’instruction SQL synchroniquement valide contenant une requête qui met en attente le SGBD back-end à renvoyer pendant un certain nombre de secondes.

Pour une liste complète des fonctionnalités, je vous propose de visiter le wiki de sqlmap.

Comment installer sqlmap si vous n’êtes pas sur kali ?

Si vous êtes sur Kali linux, vous trouverez sqlmap inclus parmis les outils de la distribution.

Sinon il faut d’abord utiliser la commande suivant pour télécharger le projet si vous avez git installé sur votre machine :

git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev

Dans le cas où vous n’aurez pas git, vous pourrez vous rendre ici pour télécharger le projet. Après la décompression du dossier, vous trouverez à la racine de celui-ci le fichier sqlmap.py que vous allez utiliser par la suite pour faire les différents tests. Pour vérifier que tout s’est bien passé, commençons par la commande:

python sqlmap.py -h.

Tout va bien. Nous pouvons maintenant nous attaquer à l’usage de sqlmap pour l’énumération, le dump etc…

Apprendre à utiliser sqlmap

Pour notre article, nous avons utilisé la machine revenge de tryhackme que vous pouvez aussi lancer pour mettre ce tuto en pratique et appliquer les commandes d’énumération et d’exploitation de bases de données ci-dessous.

Énumération des utilisateurs avec sqlmap

Pour notre cas pratique, nous allons commencer par déterminer l’ensemble des utilisateurs de la base de données avec la commande :

 sqlmap -u http://10.10.176.139/products/1 --users 
  • -u pour spécifier l’url de la cible;
  • –users pour spécifier que nous voulons les infortions concernant les utilisateurs;

Énumération des bases avec sqlmap

Nous allons ensuite identifier lister les bases de données

sqlmap -u http://10.10.176.139/products/1 --dbs 

avec –dbs pour spécifier qu’on veut toute les bases de données

Nous voyons bien qu’il y a cinq bases de données.

Identifier la base de donnée utilisée

Nous allons ensuite identifier la base de données utilisée actuellement par le site. Pour le faire nous allons utiliser la comande suivante:

sqlmap -u http://10.10.176.139/products/1 --current-db 

avec –current-db pour spécifier qu’on veut la base de données utilisé actuellement.

La base de données utilisée est « duckyinc ».

Énumération des tables d’une base avec sqlmap

Nous allons continuer en identifiant les différentes tables contenus dans cette base de données grâce à la commande

sqlmap -u http://10.10.176.139/products/1 -D duckyinc --tables

avec -D pour spécifier la base de données qu’on veut utiliser et –tables pour avoir la liste des tables.

Nous avons trois tables, celle qui nous intéresse ici est la table « user ».

Dump d’une table avec sqlmap

Nous pouvons maintenant avoir le contenu de cette table avec la commande

sqlmap -u http://10.10.176.139/products/1 -D duckyinc -T user --dump 

avec-T pour spécifier la table et –dump pour avoir le contenu de la table.

Nous avons ainsi les informations des utilisateurs.

Conclusion

Comme nous venons de le voir, sqlmap fournit des fonctionnalités puissantes nous permettant d’obtenir diverses informations sur notre cible allant même à la récupération de informations potentiellement sensibles.

Et dire que tout ça vient d’un champ mal codé…

J’espère que à travers cet article vous avez pu familiariser avec les fonctionnalités de base de sqlmap.

Leave a Comment

Time limit is exhausted. Please reload CAPTCHA.