Académique Documents
Professionnel Documents
Culture Documents
Introduction
Ce TP a pour but d’analyser un outil d’injection SQL, comprendre les vulnérabilités d’une BD et
de mettre en œuvre une attaque par injection SQL.
SQLMap est un outil permettant d’effectuer des requêtes SQL de manières automatisées dans le
but de trouver et d’exploiter une mauvaise configuration sur votre serveur Web. Ce dernier a été
développé en Python par Bernardo Damele et Miroslav Stampar sous licence GPLv2. Le choix de ce
langage de programmation est intéressant car il permet à l’outil d’être utilisable sur n’importe quel système
d’exploitation.
Support de MySQL, Oracle, PostgreSQL et Microsoft SQL Server. Outre ces quatre
systèmes de gestion de base de données (SGBD), SqlMap permet également d’identifier
Microsoft Access, DB2, Informix, Sybase et Interbase.
Support pour énumérer les utilisateurs, les mots de passe, les privilèges, les tables, les
colonnes, etc.
Prise en charge de plusieurs techniques d’injection SQL : en aveugle, UNION, etc.
Prise d’empreinte de serveurs Web
Intégration avec d’autres projets tels que w3af et Metasploit
Support des méthodes d’authentification : HTTP Basic, NTLM et par certificat
etc.
Installation
Prérequis : Sachant que cet outil a été développé en Phython, il faut donc installer python :
La procédure est également très simple sous Windows. L’installation de SQLMap se fait à partir
de deux exécutables indispensables :
- Tout d’abord, il est nécessaire de se diriger vers le site officiel de SQLMap qui
propose le téléchargement du fichier « .zip ». Afin de pouvoir l’utiliser
convenablement, il est nécessaire de compléter le téléchargement par l’exécution de
- Python 2.7 qui est téléchargeable sur le site officiel aussi. L’étape suivante consiste à
exécuter Python 2.7.
Les manipulations ne sont pas complexes mais plutôt faciles à réaliser. Pour cela, il faut lancer
Python 2.7 pour ensuite lui attribuer un fichier d’exécutions. La suite est assez simple en cliquant
uniquement sur suivant pour terminer l’installation.
Dès lors, il est nécessaire de s’occuper du fichier « .zip » de SQLMap. Ainsi, il faut extraire les
fichiers qui le constituent et le renommer pour plus de clarté par SQLMap. La suite consiste à copier ce
1
SQL MAP
Etude d’un logiciel SQL Injection
SQLMap est un outil fonctionnant en lignes de commandes. C’est pourquoi, il est indispensable de lui
créer un invite de commandes qui lui est dédié. Ainsi, il faut créer un nouveau raccourci en spécifiant «
cmd » pour automatiquement créer cet invite de commande souhaité.
2
SQL MAP
Etude d’un logiciel SQL Injection
Les propriétés qui lui sont attribuées par défaut ne conviennent pas et ne font pas appel à l’outil en
question. C’est pourquoi, il est nécessaire de modifier les propriétés et de leur attribuer une nouveau
chemin pour la cible qui correspondra au fichier SQLMap exécutable dans le fichier Python 2.
3
SQL MAP
Etude d’un logiciel SQL Injection
- http://www.flaner-en-provence.fr/catalogue/index.php?VARtheme=30
- http://www.anor.fr/terrains/consult_fiche.php?id=70
Ce site est sujet à l'injection de code SQL, car le développeur de ce site n'a pas prise en compte les
caractères nuisible. Ce peut être simplement testé en essayant d'ouvrir l'url comme indiqué ci-dessous :
http://www.flaner-en-provence.fr/catalogue/index.php?VARtheme=30’
Nous venons d'ajouter une apostrophe dans le paramètre. Si cette URL renvoie une erreur ou réagit de
manière inattendue alors il est clair que la base de données est vulnérable. Donc, dans ce cas, ce paramètre
d'entrée "id" est vulnérable à l'injection SQL.
4
SQL MAP
Etude d’un logiciel SQL Injection
Utilisation de l’outil
Dès lors que le site cible (vulnérable) est trouvé, les commandes peuvent être exécutées. La
syntaxe présentée ci-dessous est valable pour toutes les commandes. Il suffit ensuite uniquement de
changer les options pour obtenir le résultat souhaité.
Options utilisées :
L'outil sqlmap a découvert le système d'exploitation, serveur Web et base de données avec
les informations de version. Il nous indique aussi les types d’injection utilisé (Boolean-based blind,
error-based, UNION query …).
Une fois que l’outil nous confirme que le site web est vulnérable, nous pouvons donc récupérer
les noms des bases de données à l’aide de la commande suivant (option -- dbs) :
5
SQL MAP
Etude d’un logiciel SQL Injection
Une fois que nous avons le nom de la base de donné nous pouvons afficher la liste de ses tables à
l’aide de la commande suivante (option -- tables pour demander les tables ; et -D nom_de_la_BD)
6
SQL MAP
Etude d’un logiciel SQL Injection
Nous pouvons observer que l’outil nous à fournit une liste des tables disponible dans la BD.
Nous pouvons maintenant afficher le contenue d’un tableau a l’aide de la commande suivante (option --
dump, bien sûr en précisant également le nom de la table (-T nom_de_la_table et de la BD) :
Nous pouvons observer que l’outil nous a su récupère les coordonné des clients.
7
SQL MAP
Etude d’un logiciel SQL Injection