Vous êtes sur la page 1sur 9

SQL MAP

Etude d’un logiciel SQL Injection


SQL MAP
Etude d’un logiciel SQL Injection

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.

Prise en main du logiciel

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.

Voici quelques caractéristiques de l’outil :

 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 :

- apt-get install python

L’outil SQLmap est gratuit et se télécharge sur http://sqlmap.org/ .

L’outil est prêt à être utiliser.

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

fichier extrait à l’endroit où se trouve Python 2.7.

Figure 1 : Copie du fichier SQLMap dans le fichier Python2.7

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

Figure 2 : Création d’un raccourci pour l’outil Sqlmap.

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

Figure 3 : Changement de la cible dans les propriétés de l’invite de

commandes L’outil est maintenant installé et prêt à être utilisé :

Figure 4 : Interface de lancement de SQLMap

Recherche URL Vulnérable


Il existe des sites web qui possèdent des URL semblable aux URLs ci-dessus :

- 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é.

- Sqlmap.py : commande pour faire appel à SQLMap mais aussi à Python


- -u : options qui suit sqlmap.py pour indiquer qu’une adresse URL doit être
insérer ensuite
- Adresse URL du site vulnérable.
- Indiquer ensuite les options souhaitées.

python sqlmap.py -u " http://www.flaner-en-provence.fr/catalogue/index.php?VARtheme=30"

Options utilisées :

 python : Car l’outil est codé en python 


 -u : adresse de la cible 

A la fin de l’exécution nous obtenons le résultat suivant :

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) :

python sqlmap.py -u "http://www.flaner-en-provence.fr/catalogue/index.php?VARtheme=30" --dbs

5
SQL MAP
Etude d’un logiciel SQL Injection

Nous obtenons donc le résultat suivant :

Nous pouvons observer que l’outil a pu repérer deux bases de données :


  
flaner_base
 
Information_schema

Dans le même sens, pour trouver les BDs du deuxième site :

Sqlmap.py –u http://www.anor.fr/terrains/consult_fiche.php?id=70 --dbs --hex

Qui donne le résultat suivant :

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)

python sqlmap.py -u "http://www.flaner-en-provence.fr/catalogue/index.php?VARtheme=30" --tables


-D flaner_base
Nous obtenons donc le résultat suivant :

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) :

python sqlmap.py -u "http://www.flaner-en-provence.fr/catalogue/index.php?VARtheme=30" –


dump -D flaner_base -T commandes

Nous obtenons le résultat suivant :

Nous pouvons observer que l’outil nous a su récupère les coordonné des clients.

Le tableau suivant liste des options utilisées au cours du test de l’outil :


Options Leurs utilités
-u Indique l’url du site ciblé
-dbs Pour lister les bases de données

7
SQL MAP
Etude d’un logiciel SQL Injection

-Tables Pour lister les tableaux d’une base


de données
-D Indique le nom d’une base de
données
-T Indique le nom de la table
-dump Imprime le contenue d’une table

Les options utilisées sont détaillé dans le site suivant :


https://github.com/sqlmapproject/sqlmap/wiki/Usage

Vous aimerez peut-être aussi