Basic CSRF

La faille CSRF (Cross Site Request Forgery) est une faille web qui permet à un attaquant de faire exécuter une action à une personne ayant des droits supérieurs sans que celle-ci ne s’en rende compte.

Cette faille est souvent sous estimée et pourtant, suivant les cas, elle peut s’avérer fatale et je vais vous le montrer à l’aide d’une petite simulation.

I/ Exploitation d’une CSRF

Imaginez que la plateforme de modification de mot de passe de la NASA ressemble à ça :

csrf1.png

Pour changer son mot de passe, l’administrateur n’aura qu’à remplir le formulaire et cliquez sur « Envoyez » ce qui se traduira par l’envoi d’une requête GET (l’exploitation via la méthode POST est aussi faisable) :

localhost/csrf/new_pass=n3W_p%40SSw0rd

csrf2.png

Le souci c’est que nous en tant qu’attaquant nous savons que le nouveau mot de passe est envoyé via la méthode GET dans le paramètre new_pass et que ce formulaire est vulnérable aux CSRF. Par conséquent tout ce que nous avons à faire, c’est crafté la requête malicieuse :

http://localhost/csrf/new_pass=Mon_mdp_malicieux

Et inciter l’utilisateur administrateur (via Social Engineering) a l’exécuté ce qui aura pour conséquence de modifier le mot de passe de l’administrateur par la valeur « Mon_mdp_malicieux ». Une fois l’action réalisée, l’attaquant n’aura plus qu’à se connecter au compte « Administrateur » avec le mot de passe qu’il a lui même défini dans sa requête malicieuse.

Schématiquement voilà ce qu’il se passe :

csrf3.pngPour ce qui est du Social Engineering on pourra par exemple utiliser des outils tels que bitly qui raccourcissent les URL’s.