L’Atelier Web App Security représente l’étude et le test des différentes
vulnérabilités d’une application Web vulnérable (DWVA) distante ou locale en vue de la sécuriser en suite contre ces failles.
3. DVWA
Présentation de l’atelier
L’Atelier Web App Security représente l’étude et le test des différentes
vulnérabilités d’une application Web vulnérable (DWVA) distante ou
locale en vue de la sécuriser en suite contre ces failles.
Ayoub ROUZI - Abdelhakim SALAMA | (M2 SIR)
6. File Upload
Étapes d’accès a l’outil
6
AuthentificationInstallationConfiguration
Ayoub ROUZI - Abdelhakim SALAMA | (M2 SIR)
une faille de type File Upload est générée lorsqu’un hacker aura la possibilité de charger un fichier sur le serveur pour un but malveillant.
7. File Upload
Types de fichiers autorisés
Après avoir téléchargé un fichier de test, il affichera le chemin du répertoire où votre fichier a été téléchargé avec succès
"hackable/uploads/"
7
1
Ayoub ROUZI - Abdelhakim SALAMA | (M2 SIR)
8. File Upload
Exemple d’exploit de la faille File Upload
Avec la sécurité basse DWVA accepte tout type de fichier, on va voir après
comment corriger cette faille.
8
Ayoub ROUZI - Abdelhakim SALAMA | (M2 SIR)
9. File Upload
Scripts Shell C99
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.
9
1
Ayoub ROUZI - Abdelhakim SALAMA | (M2 SIR)
10. File Upload
Etude de la faille - niveau low :
On remarque bien que ce code ne contient aucun contrôle sur le fichier à uploader !
10
1
Ayoub ROUZI - Abdelhakim SALAMA | (M2 SIR)
11. File Upload
Etude de la faille - niveau medium :
À 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.
11
1
Ayoub ROUZI - Abdelhakim SALAMA | (M2 SIR)
12. File Upload
Etude de la faille - niveau medium (changement d’extension):
Mais cela reste insuffisant car on peut renommer le fichier et ajouter une extension image
12
1
Ayoub ROUZI - Abdelhakim SALAMA | (M2 SIR)
13. File Upload
Etude de la faille - niveau medium (changement d’extension)
On voit bien que l’application n’accepte pas le fichier Mais si on renomme le fichier comme suit shell.php.jpeg
13
1
Ayoub ROUZI - Abdelhakim SALAMA | (M2 SIR)
14. File Upload
Etude de la faille - niveau medium (changement d’extension)
Script uploadé après le changement d’extension
14
1
Ayoub ROUZI - Abdelhakim SALAMA | (M2 SIR)
15. File Upload
Etude de la faille - niveau high
On remarque ici l’utilisation d’un contrôle sur l’extension
15
1
Ayoub ROUZI - Abdelhakim SALAMA | (M2 SIR)
16. File Upload
Etude de la faille - niveau high
mais ceci reste toujours vulnérable à l’ajout d’une extension que l’application accepte Par exemple shell2.php.jpeg
16
1
Ayoub ROUZI - Abdelhakim SALAMA | (M2 SIR)
17. File Upload
Etude de la faille - niveau high
Pour cela on utilise la fonction php getimagesize()
17
1
Ayoub ROUZI - Abdelhakim SALAMA | (M2 SIR)
18. File Upload
Etude de la faille - niveau high
Faille résolue!
18
1
Ayoub ROUZI - Abdelhakim SALAMA | (M2 SIR)
20. CSRF ?
Faire une action à un autre utilisateur.
http://www.sitexe.com/?supprmsg=30 (GET)
Attaque possible aussi avec la méthode POST
=> Exemple avec un forum :
> Faire supprimer un message
=>Exemple avec un site d'achat :
> Faire acheter quelque chose
20
1
Ayoub ROUZI - Abdelhakim SALAMA | (M2 SIR)
21. CSRF ?
Cette attaque fonctionne grâce aux navigateurs.
Ne nécessite que peu de compétences.
la victime est le fautif .
21
1
Ayoub ROUZI - Abdelhakim SALAMA | (M2 SIR)
22. Exemple (1)
Sur un forum S :
A souhaite supprimer un message.
A trouve l'URL type pour supprimer un message.
A prépare un mail à envoyer à V avec une balise image
contenant l'adresse censée supprimer le message sur S.
Mail :
Salut ! Tu connais cette blague ?
C'est un mec il rentre dans un …..
22
1
Ayoub ROUZI - Abdelhakim SALAMA | (M2 SIR)
Le navigateur de V interprète l'image.
Ce qui exécute la requête et supprime le message.
V ne s'en rend pas compte
Logo d'image non chargé Mais c'est ce
qui permet de charger la requête
censée supprimer le message sur S.
23. Exemple (2)
L’exemple suivant reprend un table « messages » et le script PHP pour l’insertion de
données .
23
1
Ayoub ROUZI - Abdelhakim SALAMA | (M2 SIR)
24. Prévention
Jetons (ou token) aléatoires ou jetons de validités .
Vérification du Referer Header .
CAPTCHA .
24
1
Ayoub ROUZI - Abdelhakim SALAMA | (M2 SIR)
26. XSS ?
•permettant l'injection de code.
• existe en fait deux types de XSS
• XSS réfléchi (non permanent)
• Le XSS stocké (permanent)
26
1
Ayoub ROUZI - Abdelhakim SALAMA | (M2 SIR)
30. XSS - • Comment s'en protéger
• La fonction htmlspecialchars() :
remplaçant par leur équivalent en HTML. Par exemple :
• Le symbole & devient &
• Le symbole " devient "
• Le symbole ' devient '
30
1
Ayoub ROUZI - Abdelhakim SALAMA | (M2 SIR)
32. Merci pour votre attention
Ayoub ROUZI
Abdelhakim SALAMA
Des Questions?
Ayoub ROUZI - Abdelhakim SALAMA | (M2 SIR)
Notes de l'éditeur
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.
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 ».
sans qu'il le veuille et qu'il le sache
et que l'utilisateur victime est authentifié sur le site .
pointues De même, facilement découverte avec un minimum de connaissances .
Du point de vue du site attaqué,
Si ce script se nomme « add_message.php », le site de l’attaquant pourra utiliser le code suivant pour le faire exécuter par l’utilisateur .
L’utilisateur en parcourant la page de l’attaquant est alors automatiquement redirigé vers la page « add_message.php » avec les paramètres numsujet=6 , nom=CSRF et message=action frauduleuse.
Les jetons sont générés aléatoirement dans le temps. Le jeton doit être transmis avec la requête.Le serveur pourra vérifier que le formulaire a bien été produit quelques minutes auparavant .
Referer Header correspond à une information transmise à un serveur HTTP, indiquant où se trouve le lien qui nous a permis de le rejoindre.Avec une attaque CSRF, cette information est impossible à récupérer.Quelques soucis : les navigateurs peuvent désactiver l'envoi, Si on vient d'un domaine HTTPS aucun referer n'est envoyé.
Une protection vérifiant le referer est aussi possible, toutefois elle n’est pas conseillée car ce champ peut être volontairement filtré pour des raisons de sécurité
Captcha » L’avantage étant que cela n’est pas contournable . .
XSS (plus officiellement appelée Cross-Site Scripting) est une faille permettant l'injection de code HTML ou JavaScript dans des variables mal protégées.
Xss reflechi :appelée non permanente car elle n'est pas enregistrée dans un fichier ou dans une base de données.
L'exemple le plus couramment utilisé pour illustrer cette faille est la connexion à un espace membre.
Qui envoie ses paramètres à la page connexion.php .
Par exemple, que se passerait-il s'il décidait d'entrer <strong>Mathieu</strong> dans la zone de texte et de valider ? Eh bien il obtiendrait :Bonjour Mathieu ! Et là on réalise que l'insertion de code n'a plus de limite. On pourrait rentrer à peu près n'importe quoi. Une alerte JS par exemple :
Mantenent on va parler sur Le XSS stocké (permanent)
la plus sérieuse car le script est sauvegardé dans un fichier ou une base de données.
Il sera donc affiché à chaque ouverture du site.
On prendra ici l'exemple d'un livre d'or dans lequel les utilisateurs peuvent poster un commentaire. Eh bien Si l'utilisateur veut afficher son texte en rouge. Mais contrairement à l'exemple précédent, le code est ici stocké dans les données du site et sera donc visible par tous les utilisateurs.
Comme vous le savez sûrement, de nombreux sites stockent les pseudo/password de leurs utilisateurs dans des cookies.
Utilisée correctement, cette faille peut par exemple permettre au pirate de récupérer les valeurs de ces fameux cookies.
Voilà comment il va procéder. Il va tout d'abord insérer un code frauduleux sur une page de votre site où il peut écrire (livre d'or par exemple) ! Il va ensuite vous envoyer un message et vous inviter à aller voir cette fameuse page.
sans vous méfier, cliquez et là hop vous êtes redirigé et le pirate a récupéré votre cookie, et donc vos identifiants d'administrateur du site.
*le pirate n'aura qu'à récupérer la variable cookie grâce à un GET et la stocker dans un fichier.
À partir de ce moment-là il détient vos informations personnelles.
La solution la plus adaptée contre cette faille est d'utiliser la fonction htmlspecialchars() . Cette fonction permet de filtrer les symboles du type <, & ou encore ", en les remplaçant par leur équivalent en HTML. Par exemple .
Reprenons le code du début et modifions tout cela :
Maintenant réessayons d'envoyer <strong>Mathieu</strong> et! On obtient exactement ce que l'on voulait, du texte brut.
Nous espérons à travers ces présentations avoir réussi à vous expliquer le principe des différentes faillespouvant exister dans une application Web et plus important que ça comment exploiter et sécuriser cesfailles