Bienvenue dans le Bac à Sable !


      Retour à la liste des mises en situation.
1) Dans la partie Administrateur, simulons une vraie action. Cliquez sur le bouton "Bannir Toto".
Toto est bien banni car vous êtes "Administrateur". Observez l'URL, il s'agit de "". Cliquez ensuite sur Actualiser la page pour cette fois exploiter la faille.

2) Dans la partie Utilisateur, on va maintenant simuler l'envoi d'un message piégé à l'Administrateur.
Cliquez sur "Envoyer une URL piégée à l'administrateur".
Le lien est :
https://bit.ly/video_faille

qui redirige tout simplement vers l'URL vue précédemment :
https://www.leblogduhacker.fr/sandbox/csrf.php?nom=toto&submitb=Bannir+Toto

Le lien est habituellement attirant (ici par exemple : video d'une prétendue faille) pour que l'Administrateur clique.

3) Dans la partie Administrateur, cliquez sur le lien envoyé par l'Utilisateur, vous venez de bannir Toto "sans le vouloir" car vous avez exécuté la même commande que celle du bouton Bannir.
Partie Administrateur Partie Utilisateur
Cette partie est visible par un administrateur uniquement.
Voici une commande disponible pour l'administrateur:


Et voici la liste des membres fictifs :
  • Toto
  • Titi
  • NomInnovant


Cette partie est visible par un utilisateur normal du site.
Et voici la liste des membres fictifs :
  • Toto
  • Titi
  • NomInnovant



Explications et contre-mesures

La faille CSRF est redoutable et très peu connue.
Elle demande à celui qui l'exploite de connaître les liens utilisés par un utilisateur ayant des droits plus avancé (exemple: un administrateur).
Mais de nos jours presque tous les sites web utilisent des Systèmes de Gestion de Contenu qui sont open source. On peut donc connaître les liens qu'ont les administrateurs.
Il est ainsi facile d'identifier des URLs faillibles !
Pour se protéger de cette attaque, il faut par exemple utiliser des jetons qui seront envoyés en plus des paramètres habituels.
Ces jetons à usage unique permettent de vérifier les actions et rendent impossible le fait de prédire une URL.
Par exemple, ici il aurait fallu que le bouton Bannir Toto exécute une commande comme :
http://www.leblogduhacker.fr/sandbox/csrf.php?nom=toto&submitb=Bannir+Toto&jeton=44df54d8bdcd78
avec 44df54d8bdcd78 un exemple de jeton généré au hasard, impossible à deviner à l'avance et qui sera vérifié avant de bannir Toto.
À minima, un avertissement de type "êtes vous sûr de..." aurait été de mise...
Plus d'informations.