Web Security Academy

Cross-site request forgery - Lab : CSRF where token is not tied to user session

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é du lab ( carlos / montoya ). L'onglet "Change email" apparaît :

On accède à cette section :

On essaye maintenant de changer l'adresse mail par "xxxx@hotmail.fr" afin 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 "xxxx@hotmail.fr" et l'autre où est placé un token CSRF.

On tente d'enlever le token pour observer la réaction du serveur et on voit qu'il retourne une erreur.

On essaye maintenant d'inclure notre token CSRF généré lorsque l'on s'est connecté à notre compte. Il se peut que le serveur vérifie seulement la présence d'un token valide, sans contrôler l'appartenance de celui-ci.

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 :

Le lab se valide. Notre payload s'est bien lancé chez la victime sans erreur.