Nous commençons donc avec les failles de type CSRF.
Sécurité : Fonctionnement et impact d’une attaque CSRF
L’objectif même de l’attaque est généralement d’exécuter une action, exemple : Créer un utilisateur sur un site web.
1. Compte Rendu Atelier 4 :
DVWA (4/4) : Solutions, explications et étude des protections
UNIVERSITÉ ABDELAMLEK ESSADI
FACULTE DES SCIENCES ET TECHNIQUES DE TANGER
MASTER : « SYSTEMES INFORMATIQUES ET RESEAUX »
Réalisé par : - Encadré par :
- Rouzi Ayoub Mr. M Bouhorma
2. MASTER-SIR R a p p o r t | 2
AYOUB ROUZI
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 si 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.
Application – file upload:
Dans ce cas de figure on va utiliser la sécurité basse de DVWA et on va uploader dans l’application un fichier
malveillant, il s’agit d’un shell php « c99 ».
Avec la sécurité basse DWVA accepte tout type de fichier, on va voir après comment corriger cette faille.
DVWA a bel et bien accepté notre fichier, maintenant passons aux choses intéressantes. On va maintenant utiliser
notre fichier c99.php ou notre backdoor :
3. MASTER-SIR R a p p o r t | 3
AYOUB ROUZI
A travers ce Shell, on peut tout faire pour un serveur Unix. En d’autres termes il nous permet de prendre le contrôle
d’un serveur.
Etude de la faille
Maintenant venons au code de la faille :
Commençons par le niveau low :
On remarque bien que ce code ne contient aucun contrôle sur le fichier à uploader !
On passe maintenant au niveau medium
4. MASTER-SIR R a p p o r t | 4
AYOUB ROUZI
À ce niveau, on remarque le code contient désormais deux contrôles sur le fichier ; un contrôle sur le type et un
second sur la taille.
Mais cela reste insuffisant car on peut renommer le fichier et ajouter une extension image
Et voilà :
On voit bien que l’application n’accepte pas le fichier
Mais si on renomme le fichier comme suit shell.php.jpeg
5. MASTER-SIR R a p p o r t | 5
AYOUB ROUZI
Au niveau high :
6. MASTER-SIR R a p p o r t | 6
AYOUB ROUZI
On remarque ici l’utilisation d’un contrôle sur l’extension mais ceci reste toujours vulnérable à l’ajout d’une
extension que l’application accepte Par exemple shell2.php.jpeg
Pour cela on utilise la fonction php getimagesize()
Alors le code devient :
7. MASTER-SIR R a p p o r t | 7
AYOUB ROUZI
Le test :
Et voilà :
!Xss reflected :
Le cross-site scripting (abrégé XSS), est un type de faille de sécurité des sites web permettant d'injecter du contenu
dans une page, permettant ainsi de provoquer des actions sur les navigateurs web visitant la page. Les possibilités
des XSS sont très larges puisque l'attaquant peut utiliser tous les langages pris en charge par le navigateur
(JavaScript, Java, Flash...) et de nouvelles possibilités sont régulièrement découvertes notamment avec l'arrivée de
nouvelles technologies comme HTML5. Il est par exemple possible de rediriger vers un autre site pour du
hameçonnage ou encore de voler la session en récupérant les cookies.
1. Low level :
Comme nous pouvons le voir dans le DVWA, il y a une zone de texte qui a comme paramètre d’entée une chaine de
caractère, elle retourne un message « hello nom_saisie ».
8. MASTER-SIR R a p p o r t | 8
AYOUB ROUZI
On ajoute <i><b>ayoub</b></i>
Ceci est un simple exemple, mais avec des codes plus complexe et dangereux, l'attaquant peut :
- voler des informations d'identification dans les cookies non-HttpOnly.
- envoyer des requêtes à un serveur avec les informations d'identification de l'utilisateur.
- voler des secrets qui sont stockés dans les variables JavaScript.
- -inviter l'utilisateur à télécharger du contenu en soumettant un formulaire.
- rediriger vers un autre site.
- obtenir des données GPS / appareil photo si l'utilisateur a accordé que l'accès du site à l'appareil.
* Exemple du code qui permet de changer les liens dans les balises <a></a> avec un lien malveillant :
Exemple du code qui permet de d’intercepter les cookies d’un utilisateur et les envoie à son serveur.
Ce problème existe puisque il n’a pas de contrôle sur le champ de saisie.
2. medium level :
Dans ce niveau, on ajoute une fonction dans le langage PHP : le « str_remplace ». Elle permet de faire un filtre dans
la saisie. Tout balise commencent par « <script> » sera remplacer par une chaine vide.
9. MASTER-SIR R a p p o r t | 9
AYOUB ROUZI
Et pourtant, ils pourraient également être acceptés par le filtre.
3. High level :
Apres la modification du code, on a ajouté htmlspecialchars()qui filtre les caractères spécial.
C’est la mode la plus sécurisé.
Xss stored
Ce type de vulnérabilité, aussi appelé faille permanente ou du second ordre permet des attaques puissantes. Elle se
produit quand les données fournies par un utilisateur sont stockées sur un serveur (dans une base de données, des
fichiers, ou autre), et ensuite réaffichées sans que les caractères spéciaux HTML aient été encodés.
On tape dans la case : « Name » : n’importe quel nom
« Message » : la ligne suivante : <script>alert("Ceci affiche une alerte javascript dans la page");</script>
Et voilà
On va essayer cette fois d’insérer une page web dans la page du livre d'or.
Pour cela on écrit dans la case « Message » : <iframe src="http://www.Google.com"></iframe>
On remarque que le site www.Google.com apparait à l'endroit où aurait du être placé notre message !
10. MASTER-SIR R a p p o r t | 10
AYOUB ROUZI
On va tenter Maintenant une attaque de niveau plus important : Les cookies
On tape dans le champ « Message » : <script>alert(document.cookie);</script>