Retour à la liste des mises en situation.
1) Dans la partie Administrateur, cliquez sur le bouton "Bannir Toto". Toto est donc bien banni car vous êtes "Administrateur". 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://www.leblogduhacker.fr/sandbox/exclu-vaccin-sida.php
qui redirige tout simplement vers : https://www.leblogduhacker.fr/sandbox/csrf.php?nom=toto&submitb=Bannir+Toto
Le lien est habituellement attirant (ici par exemple : vaccin sida) 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 la victime.
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 des administrateurs.
Il est donc facile d'identifier des URLs faillibles et il y en a énormément !
Pour se protéger de cette attaque, il faut utiliser des
jetons qui seront envoyés en plus des autres paramètres.
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 numéro généré au hasard, impossible à deviner à l'avance et qui sera vérifié avant de bannir Toto.
Plus d'informations.