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 :
|
Cette partie est visible par un utilisateur normal du site.
Et voici la liste des membres fictifs :
|
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.