Web Security Academy

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

Objectif :

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

Solution :

On lance le lab et on se trouve sur 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 "Jerome@gmail.com" et d'analyser la requête émise vers le serveur :

C'est une requête POST qui est construite avec deux paramètres : l'un nommé "email" ayant comme valeur "Jerome@gmail.com" et l'autre représentant un token CSRF.

On va tout simplement tenter d'enlever le token de la requête. Il se peut que l'application ne vérifie pas le token CSRF s'il n'est pas présent.

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 sans token, l'action est quand même effectuée. Le lab est désormais validé !