24
BOULALA - MARTIN - 2013 Cross Site Request Forgery (CSRF) 1 OWASP Top 10 OWASP Top 10 N°8 - Falsification de requête intersite (CSRF) N°8 - Falsification de requête intersite (CSRF) Kevin BOULALA – Maxime MARTIN Kevin BOULALA – Maxime MARTIN

Présentation CSRF (complète avec démo)

Embed Size (px)

DESCRIPTION

Présentation d'une attaque du type CSRF avec une présentation en fin de document. Présentation faite lors de ma Licence 3 Informatique à l'Université de Franche-Comté. Besançon, Novembre 2013.

Citation preview

Page 1: Présentation CSRF (complète avec démo)

BOULALA ­ MARTIN ­ 2013 Cross Site Request Forgery (CSRF) 1

OWASP Top 10OWASP Top 10

N°8 ­ Falsification de requête intersite (CSRF)N°8 ­ Falsification de requête intersite (CSRF)

Kevin BOULALA – Maxime MARTINKevin BOULALA – Maxime MARTIN

Page 2: Présentation CSRF (complète avec démo)

BOULALA ­ MARTIN ­ 2013 Cross Site Request Forgery (CSRF) 2

• • CSRF ?CSRF ?

• • Exemple simpleExemple simple

• • Les vulnérabilités de cette attaqueLes vulnérabilités de cette attaque

• • Comment éviter ces attaquesComment éviter ces attaques

• • DémonstrationDémonstration

PLANPLAN

Page 3: Présentation CSRF (complète avec démo)

BOULALA ­ MARTIN ­ 2013 Cross Site Request Forgery (CSRF) 3

CSRF ?CSRF ?

Faire une action à un autre utilisateur sans qu'il le veuille Faire une action à un autre utilisateur sans qu'il le veuille et qu'il le sacheet qu'il le sache

http://www.sitexe.com/?supprmsg=30http://www.sitexe.com/?supprmsg=30 ( (GETGET))Attaque possible aussi avec la méthode Attaque possible aussi avec la méthode POSTPOST

Exemple avec un forum :Exemple avec un forum :> Faire supprimer un message> Faire supprimer un message> S'abonner à un fil de discussion> S'abonner à un fil de discussion

Exemple avec un site d'achat :Exemple avec un site d'achat :> Faire acheter quelque chose> Faire acheter quelque chose

Page 4: Présentation CSRF (complète avec démo)

BOULALA ­ MARTIN ­ 2013 Cross Site Request Forgery (CSRF) 4

CSRF ?CSRF ?

Cette attaque fonctionne grâce aux Cette attaque fonctionne grâce aux navigateursnavigateurset que l'utilisateur victime est et que l'utilisateur victime est authentifiéauthentifié sur le site sur le site

Ne nécessite que peu de compétences pointuesNe nécessite que peu de compétences pointues

De même, facilement découverte avec un De même, facilement découverte avec un minimum de connaissancesminimum de connaissances

Du point de vue du site attaqué, Du point de vue du site attaqué, la victime est la victime est le fautifle fautif

Page 5: Présentation CSRF (complète avec démo)

BOULALA ­ MARTIN ­ 2013 Cross Site Request Forgery (CSRF) 5

ExempleExemple

Sur un forum Sur un forum S S ::

AA souhaite supprimer un message. souhaite supprimer un message.AA trouve l'URL type pour supprimer un message. trouve l'URL type pour supprimer un message.

AA prépare un mail à envoyer à  prépare un mail à envoyer à VV avec une balise image  avec une balise image contenant l'adresse censée supprimer le message sur contenant l'adresse censée supprimer le message sur SS..

L'attaquant La victime Le site victimeA V S

Page 6: Présentation CSRF (complète avec démo)

BOULALA ­ MARTIN ­ 2013 Cross Site Request Forgery (CSRF) 6

ExempleExemple

L'attaquant La victime Le site victimeA V S

Salut ! Tu connais cette blague ?Salut ! Tu connais cette blague ?C'est un mec il rentre dans un bar et C'est un mec il rentre dans un bar et 

il crie "COUCOU C'EST MOI !!" il crie "COUCOU C'EST MOI !!" et enfaite c'était pas lui...et enfaite c'était pas lui... X

Mail :Mail :Logo d'image non chargéLogo d'image non chargé

Mais c'est ce qui permet Mais c'est ce qui permet de charger la requête de charger la requête censée supprimer le censée supprimer le message sur message sur SS..

Page 7: Présentation CSRF (complète avec démo)

BOULALA ­ MARTIN ­ 2013 Cross Site Request Forgery (CSRF) 7

ExempleExemple

L'attaquant La victime Le site victimeA V S

Le navigateur de Le navigateur de VV interprète l'image. interprète l'image.

Ce qui exécute la requête et supprime le message.Ce qui exécute la requête et supprime le message.

VV ne s'en rend pas compte. ne s'en rend pas compte.

Page 8: Présentation CSRF (complète avec démo)

BOULALA ­ MARTIN ­ 2013 Cross Site Request Forgery (CSRF) 8

Beaucoup (si ce n'est toutes) les fonctionnalités Beaucoup (si ce n'est toutes) les fonctionnalités d'un site sont vulnérablesd'un site sont vulnérables

Tout dépend de l'activité du site :Tout dépend de l'activité du site :Transaction boursièreTransaction boursière

Vente en ligneVente en ligneForum de discussionForum de discussion

......

VulnérabilitésVulnérabilités

Page 9: Présentation CSRF (complète avec démo)

BOULALA ­ MARTIN ­ 2013 Cross Site Request Forgery (CSRF) 9

Pour réaliser une attaque

Utilisation classique des outils du WEBUtilisation classique des outils du WEB

HTMLHTML et  et JavaScriptJavaScript

Le plus populaire : la Le plus populaire : la balise imgbalise img en HTML  en HTML (technique utilisé dans l'exemple précédent)(technique utilisé dans l'exemple précédent)

VulnérabilitésVulnérabilités

Page 10: Présentation CSRF (complète avec démo)

BOULALA ­ MARTIN ­ 2013 Cross Site Request Forgery (CSRF) 10

Reprise de l'exemple :

L'image qui ne se chargeait pas :L'image qui ne se chargeait pas :<img src='<img src='http://www.sitexe.com/?supprmsg=30http://www.sitexe.com/?supprmsg=30' /' />>

Version JavaScript :Version JavaScript :<script><script>

var foo = new image();var foo = new image();foo.src="http://www.sitexe.com/?supprmsg=30";foo.src="http://www.sitexe.com/?supprmsg=30";

</script></script>

Note : selon le navigateur, il ne s'affichera rien ou Note : selon le navigateur, il ne s'affichera rien ou bien au pire des cas le logo vu plutôt.bien au pire des cas le logo vu plutôt.

VulnérabilitésVulnérabilités

X

Page 11: Présentation CSRF (complète avec démo)

BOULALA ­ MARTIN ­ 2013 Cross Site Request Forgery (CSRF) 11

La méthode de l'image est réutilisable avec d'autres balises :

<<scriptscript src...>, < src...>, <iframeiframe src...>, etc src...>, etc

Il est aussi possible de faire cette attaque avec la Il est aussi possible de faire cette attaque avec la méthode méthode POSTPOST..

La difficulté n'est pas plus grande, il est juste plus La difficulté n'est pas plus grande, il est juste plus délicat de le mettre en place.délicat de le mettre en place.

VulnérabilitésVulnérabilités

Page 12: Présentation CSRF (complète avec démo)

BOULALA ­ MARTIN ­ 2013 Cross Site Request Forgery (CSRF) 12

Avec un peu de Avec un peu de JavaScriptJavaScript et de  et de HTML HTML ::

<body <body onload="document.getElementById('f').submit()"onload="document.getElementById('f').submit()">><form id="f" action="<form id="f" action="http://sitexe.com/poster.phphttp://sitexe.com/poster.php" " method="post" name="form">method="post" name="form">

<input name="titre" <input name="titre" value="Blague pourrie"value="Blague pourrie">><textarea name="message"><textarea name="message">C'est un gars qui rentre C'est un gars qui rentre  dans un café et plouf !dans un café et plouf !</textarea></textarea><input name="update" value="update"><input name="update" value="update">

</form></body></form></body>

Il est nécessaire de lire le code du site victime pour faire Il est nécessaire de lire le code du site victime pour faire cette attaque.cette attaque.

VulnérabilitésVulnérabilités

Page 13: Présentation CSRF (complète avec démo)

BOULALA ­ MARTIN ­ 2013 Cross Site Request Forgery (CSRF) 13

Ce qui ne fonctionne pas :Ce qui ne fonctionne pas :

> Les requêtes POST (dernière partie : Vulnérabilités)> Les requêtes POST (dernière partie : Vulnérabilités)

> Les opérations en plusieurs étapes :> Les opérations en plusieurs étapes :Du moment que l'attaquant peut prévoir les différentes Du moment que l'attaquant peut prévoir les différentes 

étapes...étapes...

PréventionPrévention

Page 14: Présentation CSRF (complète avec démo)

BOULALA ­ MARTIN ­ 2013 Cross Site Request Forgery (CSRF) 14

Ce qui fonctionne :Ce qui fonctionne :

> Jetons (ou token) aléatoires ou> Jetons (ou token) aléatoires ou jetons de validités jetons de validités : :

Les jetons sont générés aléatoirement dans le temps.Les jetons sont générés aléatoirement dans le temps.

Le jeton doit être transmis avec la requête.Le jeton doit être transmis avec la requête.

Le serveur pourra vérifier que le formulaire a bien été Le serveur pourra vérifier que le formulaire a bien été 

produit quelques minutes auparavant.produit quelques minutes auparavant.

PréventionPrévention

Page 15: Présentation CSRF (complète avec démo)

BOULALA ­ MARTIN ­ 2013 Cross Site Request Forgery (CSRF) 15

Ce qui fonctionne :Ce qui fonctionne :

> Vérification du > Vérification du Referer HeaderReferer Header : :

Referer Header correspond à une information transmise à un Referer Header correspond à une information transmise à un serveur HTTP, indiquant où se trouve le lien qui nous a permis serveur HTTP, indiquant où se trouve le lien qui nous a permis 

de le rejoindre.de le rejoindre.

Avec une attaque CSRF, cette information est impossible à Avec une attaque CSRF, cette information est impossible à récupérer.récupérer.

Quelques soucis : les navigateurs peuvent désactiver l'envoi.Quelques soucis : les navigateurs peuvent désactiver l'envoi.Si on vient d'un domaine HTTPS aucun referer n'est envoyé.Si on vient d'un domaine HTTPS aucun referer n'est envoyé.

PréventionPrévention

Page 16: Présentation CSRF (complète avec démo)

BOULALA ­ MARTIN ­ 2013 Cross Site Request Forgery (CSRF) 16

Ce qui fonctionne :Ce qui fonctionne :

Quelques solutions en vrac :Quelques solutions en vrac :

                                                                                          CAPTCHA CAPTCHA 

                                                          Ré­authentificationRé­authentification

                          Désactiver les scripts dans le Désactiver les scripts dans le navigateur (& utiliser POST sur le site)navigateur (& utiliser POST sur le site)

etcetc

PréventionPrévention

Page 17: Présentation CSRF (complète avec démo)

BOULALA ­ MARTIN ­ 2013 Cross Site Request Forgery (CSRF) 17

DémonstrationDémonstration

Voici la démonstration de l'attaque effectuéeVoici la démonstration de l'attaque effectuée

en classe en classe 

Nous verrons le cas d'un site non sécurisé et sécuriséNous verrons le cas d'un site non sécurisé et sécurisé

en parallèleen parallèle

Cette attaque a été réalisé avec le navigateur MidoriCette attaque a été réalisé avec le navigateur Midori

Les navigateurs tel que Chrome empêche ce genre d'attaqueLes navigateurs tel que Chrome empêche ce genre d'attaque

Page 18: Présentation CSRF (complète avec démo)

BOULALA ­ MARTIN ­ 2013 Cross Site Request Forgery (CSRF) 18

DémonstrationDémonstration

Connexion de l'utilisateur sur le site qui va être attaquéConnexion de l'utilisateur sur le site qui va être attaqué

Site sécuriséSite sécuriséSite non sécuriséSite non sécurisé

Page 19: Présentation CSRF (complète avec démo)

BOULALA ­ MARTIN ­ 2013 Cross Site Request Forgery (CSRF) 19

DémonstrationDémonstration

L'utilisateur est connecté et peut voir ses messagesL'utilisateur est connecté et peut voir ses messages

Site sécuriséSite sécuriséSite non sécuriséSite non sécurisé

Page 20: Présentation CSRF (complète avec démo)

BOULALA ­ MARTIN ­ 2013 Cross Site Request Forgery (CSRF) 20

DémonstrationDémonstration

La victime reçoit un mail qui l'invite à aller sur un siteLa victime reçoit un mail qui l'invite à aller sur un site

Page 21: Présentation CSRF (complète avec démo)

BOULALA ­ MARTIN ­ 2013 Cross Site Request Forgery (CSRF) 21

DémonstrationDémonstration

Il arrive sur ce site, qui contient des requêtes forgéesIl arrive sur ce site, qui contient des requêtes forgées

Page 22: Présentation CSRF (complète avec démo)

BOULALA ­ MARTIN ­ 2013 Cross Site Request Forgery (CSRF) 22

DémonstrationDémonstration

Extrait du code source de la pageExtrait du code source de la page

Requête forgée pour Requête forgée pour attaquer le site pas attaquer le site pas sécurisésécurisé

Et celle­ci pour le Et celle­ci pour le site sécurisésite sécurisé

Page 23: Présentation CSRF (complète avec démo)

BOULALA ­ MARTIN ­ 2013 Cross Site Request Forgery (CSRF) 23

DémonstrationDémonstration

Autant de fois la page est rafraîchie, autant de fois Autant de fois la page est rafraîchie, autant de fois les requêtes forgées seront exécutéesles requêtes forgées seront exécutées

Site sécuriséSite sécuriséSite non sécuriséSite non sécurisé

Page 24: Présentation CSRF (complète avec démo)

BOULALA ­ MARTIN ­ 2013 Cross Site Request Forgery (CSRF)

Return EXIT_SUCCESS ?Return EXIT_SUCCESS ?

42