Tutoriel Sqlmap – Test de penetration avec injection sql
Didacticiel à vacation éducationnel
Sqlmap est un outils d’automatisation d’injection vous permettant d’automatise le processus de détection et d’exploitation des failles d’injection SQL, dans vos applications WEB, et de prise en charge des serveurs de bases de données. Avec une url (requête http vulnérable), sqlmap peut exploiter la base de données distante et extraire des noms de bases de données, des tables, des colonnes, les données dans les tables, etc. Sqlmap est devenu maintenant un outils indispensable dans la trousse d’un Pentester.
L’outil a été developpé en Python, ce qui veut dire qu’il peut-être exécute sur n’importe quelle OS ou python (Par défaut installé sur Ubuntu) est installé.
Dans ce didacticiel, nous allons apprendre à utiliser sqlmap pour exploiter une application Web vulnérable et voir ce qui peut être fait avec un tel outil.
Utilisation
L’utilisation de Sqlmap peut se faire soit :
- URL Vulnérable(le cas de ce didicaticiel)
- Google dork
URLs Vulnérable
Supposant qu’une application Web a l’url suivante :
http://www.site.com/our-products-detail.php?id=7
Cette URL pourra être vulnérable a une injection SQL si le développeur de l’application n’a pas correctement échappé l’id du paramètre. Cela peut être testé en essayant d’ouvrir l’URL suivante :
http://www.site.com/our-products-detail.php?id=7‘
Notez qu’ici on a juste ajouté une simple cote. Si cette nouvelle requête lance une erreur ou réagit d’une manière inattendue, alors il est clair que le développeur n’a pas échappé la valeur du paramètre. Donc, le paramètre id ici est vulnérable à l’injection Sql
1. Tester l’injection avec Sqlmap
Les commandes sqlmap sont exécutées à partir du terminal avec l’interpréteur python.
Cette commande est la première et la plus simple des commandes à exécuter sur sqlmap. Elle permet de vérifier le paramètre et détermine s’il est vulnérable à une injection Sql. Pour cela sqlmap envoie différents types de requêtes d’injections Sql au paramètre d’entree (id) et vérifie la sortie
python sqlmap.py -u « http://www.site.com/our-products-detail.php?id=7 »
L’outil sqlmap a donc découvert la base de données ainsi que les informations de version
2. Découvrir les bases de données
Une fois que sqlmap confirme que l’url distante est vulnérable à l’injection sql et est exploitable, l’étape suivante consiste à trouver les bases de données qui existent sur le système distant. Pour cela on utilisera le paramètre –dbs
python sqlmap.py -u « http://www.site.com/our-products-detail.php?id=7 » –dbs
Le résultat montre les bases de données existantes sur le système distant.
3. Découvrir les tables dans une base de données particulière
Une fois les basent de données détectées, il est temps de savoir quelles tables existent dans une base de données particulière. Disons que la base de données d’intérêt ici est ‘u72………‘
python sqlmap.py -u « http://www.site.com/our-products-detail.php?id=7 » –tables -D nom_base_donnees_cible
4. Découvrir les colonnes d’une table particulière
Une fois qu’on a la liste des tables de la base de données détectées, il est temps de savoir les colonnes d’une tables particulière. Supposant qu’on cible la table ‘admin_blog‘
python sqlmap.py -u « http://www.site.com/our-products-detail.php?id=7 » –columns -D nom_base_donnees_cible -T nom_table
5. Obtenir des données d’une table
Une fois qu’on a pu avoir les colonnes d’une table, on va maintenant chercher les données qui y sont insérées
python sqlmap.py -u « http://www.site.com/our-products-detail.php?id=7 » –dump -D nom_base_donnees_cible -T nom_table
Si vous tentez de récupérer les données d’une table qui stockent des données utilisateurs (Login, mot de passe). Sqlmap dispose des outils lui permettant de craquer les mots de passe pour vous, a travers un dictionnaire des données que vous pouvez lui fournir ou utiliser celui par défaut.
FINALEMENT : Un outil qui utilise Google Dorks
Pour aller plus loin, vous pouvez utiliser le logiciel dorkme ou le script shell Fast-Google-Dorks-Scan sur votre propre site web pour voir s’il est vulnérable aux injection SQL.