Académique Documents
Professionnel Documents
Culture Documents
U 2022/2023
LUS Réseaux et Télécommunications
L’objectif de ce TP est de comprendre la vulnérabilité SQL injection. Pour cela nous suivrons
un scénario d’exploitation d’une SQLi sur une application web PHP/SQL vulnérable DVWA
(http://www.dvwa.co.uk/). Nous hébergerons DVWA sur un serveur local Apache sur une
machine virtuelle linux.
Installation de l’environnement :
1- Installation de la machine virtuelle Kali Linux :
- Installer Virtual Box: https://www.virtualbox.org/wiki/Downloads
- Télécharger l’image Virtual Box de Kali Linux : https://www.kali.org/downloads/
Démarrer votre machine virtuelle Kali. (Vous trouverez les identifiants par défauts sur :
https://www.kali.org/docs/introduction/default-credentials/ )
2- Installation d’un serveur web (Apache2) :
Si c’est votre première utilisation de votre machine kali, il est recommandé d’installer
les dernières versions des paquets : pour cela exécutez les deux commandes :
$ sudo apt-get update
$ sudo apt-get upgrade
Apache est préinstallé sur Kali, mais si vous utilisez une autre distribution vous pouvez
toujours l’installer avec
$ sudo apt install apache2
- Démarrer apache2:
$ sudo service apache2 start
3- Installation de Git:
Installer git avec la commande : $ sudo apt install git
4- Installation et configuration de DVWA :
- Allez dans le répertoire /var/www/html avec la commande : $ cd /var/www/html
- Clonez DVWA de GitHub avec :
$ sudo git clone https://github.com/ethicalhack3r/DVWA.git
- Attribuez toutes les permissions au répertoire DVWA avec :
$ sudo chmod -R 777 /var/www/html/DVWA
- Si une page s’affiche indiquant que le fichier config.inc.php est inexistant, allez dans
le répertoire /var/www/html/DVWA/config et copiez le contenu du fichier
config.inc.php.dist dans config.inc.php avec la commande :
$ cp config.inc.php.dist config.inc.php
- Installez le module complémentaire php-gd : $ sudo apt-get install php-gd
- La page suivante devra s’afficher sur votre navigateur :
Cliquez sur le bouton create Database : une page Login devra s’afficher après quelques
secondes. Entrez les identifiants : admin et password.
Remarquez que le code permet d’afficher l’ID de l’utilisateur, le nom est le surnom.
Instruction 2 : Testez si le code est vulnérable à une injection SQL. Pour cela entrez le
caractère spécial ‘.
Cela nous montre que le code de l’application web ne filtre pas les entrées de l’utilisateur, elles
sont directement insérées dans la requête SQL du code php. Le champ est bien vulnérable à
l’injection SQL.
2- Exploitation de la vulnérabilité :
Insérez le texte : %' or 0=0 union select null, version() # dans le text box de User ID et cliquez
sur submit.
Remarquez que la version de la base de données est affichée. Dans notre cas 10.5.8- MariaDB-
3
Université Ibn Tofail A.U 2022/2023
LUS Réseaux et Télécommunications
Notes : Remarquez que l’utilisateur dvwa@localhost est affiché. C’est l’utilisateur qui exécute
la requête SQL du code PHP.
Université Ibn Tofail A.U 2022/2023
LUS Réseaux et Télécommunications
Notes:
- 0x0a permet de faire un retour à la ligne
- Remarquez l’existence d’une colonne password de la table users.
- Pour plus d’informations sur information_schema.columns consultez :
https://mariadb.com/kb/en/information-schema-columns-table/
Instruction 9 : Afficher le contenu de la colonne password :
Insérez le texte: %' and 1=0 union select null, concat(first_name, 0x0a, last_name, 0x0a,
user, 0x0a, password) from information_schema.columns where table_name = 'users' #
dans le text box de User ID et cliquez sur Submit.
Université Ibn Tofail A.U 2022/2023
LUS Réseaux et Télécommunications
Notes : Vous avez pu retrouver tous les noms, surnoms et mots de passe des utilisateurs.
Remarquez que les mots de passe sont stockés sous forme de Hash.
Pouvez-vous identifier quelle méthode de Hash est utilisée ? Pouvez-vous retrouver les mots
de passe en texte clair ?
Réponse :
On peut remarquer que les de mots de passe hachés sont des chaines de 32 digits hexadécimaux.
Les lettres vont de « a » à « f » minuscule. Cela peut suggérer que l’algorithme de hachage
utilisé est MD5.
Plusieurs outils permettent d’identifier et craquer des haches MD5 : entre autres l’outil en ligne
disponible sur le lien : https://crackstation.net/.
Si le mot de passe utilisé existe déjà dans la base de données du site, on peut retrouver le mot
de passe en texte clair. C’est bien le cas pour les mots de passe de cette application.