Web Security Academy

Cross-site request forgery - Lab : CSRF where token validation depends on request method

Objectif :

  • Réussir à changer l'adresse email d'une personne inscrite dans le site.

Solution :

On lance le lab et on se trouve sur la première page d'un blog :

On se connecte avec l'identifiant et le mot de passe d'un compte fourni dans l'énoncé ( carlos / montoya ) et l'onglet "Change email" apparaît :

On accède à cette section :

On essaye maintenant de changer l'adresse mail par "Jean@hotmail.fr" et d'observer la requête émise lorsqu'on clique sur "Update email" :

C'est une requête POST qui est construite avec deux paramètres : l'un nommé "email" ayant comme valeur "Jean@hotmail.fr" et l'autre où est placé un token CSRF.

On va tenter de modifier cette requête en transformant la method POST en GET sans inclure le CSRF token. Il se peut que le serveur ne vérifie pas la présence du token si c'est une requête GET qu'il reçoit.

Dans le lab, une simulation d'envoi et d'exécution d'un payload sur une victime est implémentée. Il suffit de cliquer sur "Go to exploit serveur" et de simuler l'envoi d'une requête réponse vers une cible à partir duquel notre payload sera exécuté.

On accède à cette fonctionnalité et on simule l'exécution du code HTML suivant chez une victime :

On peut tester ce code sur nous-même et on observe que l'action est bien effectuée sans erreur. Le lab est désormais validé !