Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les forums > Le Site du Zéro v3 > Rapports de bugs > Faille CSRF > Lecture du sujet

Faille CSRF

Vous devez être inscrit pour pouvoir poster des messages

RésoluLe problème de ce sujet a été résolu

Page : 1  2  Suivante
Auteur Message
1 visiteur sur ce sujet (1 anonyme)
Page : 1  2  Suivante
Hors ligne Aj4x # Posté le 02/04/2008 à 00:01:33
Avatar
Groupe : Membres
Section concernée : Choix de l'Avatar
URL : http://www.siteduzero.com/membres-299.html
Comment reproduire le bug :
Erreur se produisant : Il est possible d'exploiter une faille de type CSRF via les liens d'avatars.
Cette faille permettrait d'envoyer n'importe qui visualisant l'avatar ( que ce soit sur le forum ou autre ) sur une page choisi par l'attaquant, afin par exemple d'usurper l'IP du visiteur, ...

A bon entendeur
Cordialement,
Ajax


EDIT: Cette même faille est présente dans tout les affichages d'images, que ce soit les tutoriels, les MPs, les signatures, les biographies, etc ...

Exemple : Image utilisateur
( Regarder le code source de l'affichage de cette image ;) )
Édité le 02/04/2008 à 00:23:50 par Aj4x
Hors ligne tsukasagenesis # Posté le 02/04/2008 à 00:24:02
Avatar
Groupe : Membres
Hors ligne karamilo # Posté le 02/04/2008 à 08:26:42
Aussie 'til December
Avatar
Admins
Conclusion => il faut interdire toutes les images, tout le zcode, les cookies, etc.
Donc non.
 
Hors ligne tsukasagenesis # Posté le 02/04/2008 à 12:25:55
Avatar
Groupe : Membres
Salut,

C'est faut, il suffit juste de vérifier que le header de la page est bien une image, sa limite pas mal, avec sa, c'est vite fait ...

Ps: tu peut voir la puissance des faille CSRF en regardant le nombre de page vue sur cette page :)
Édité le 02/04/2008 à 12:27:46 par tsukasagenesis
 
Hors ligne karamilo # Posté le 02/04/2008 à 13:45:26
Aussie 'til December
Avatar
Admins
Waouh, quelle puissance. Tu sais qu'on peut changer une page après l'avoir envoyée ? Tu sais qu'on peut forger des images avec un bon header mais un code frauduleux ?
On ne peut pas contrôler ça.
 
Hors ligne tsukasagenesis # Posté le 02/04/2008 à 14:28:47
Avatar
Groupe : Membres
Oui, je sais très bien qu'on peut modifier le header très facilement, mais comme le js ne marche pas dans se jore de faille, la seule exploitation possible serais par exemple de voter sur un site ne demandant pas de variable POST, et ainsi usurpé l'ip de l'utilisateur. Hors c'est justement cette exploitation qui peut etre bloqué en vérifiant le header. Par exemple il serait impossible d'inclure cette page si tu vérifait le header ...

A bon entendeur,

Tsukasa.
Édité le 02/04/2008 à 14:29:39 par tsukasagenesis
 
Hors ligne matheod # Posté le 02/04/2008 à 15:37:10
<? echo $citation; ?>
Avatar
Groupe : Membres
une question : c'ets un fopen que tu as fait ? Sinon, comment bloqué cela, car ca pourrais peut etre me servir, merci
 
Hors ligne Aj4x # Posté le 02/04/2008 à 15:48:10
Avatar
Groupe : Membres
Je pense que Tsukasa entendais par les TAGS des images ?

Pour empêcher l'utilisation de cette faille, ou du moins pour la limiter, on peut utliser les même protections que pour un script d'uplaod, avec des fonctions de redimensionnement d'image, etc ...

On pourrais par exemple s'inspiré de la protection qu'utilise les forums de type phpBB, IPB, etc ...

A bon entendeur,
Ajax

PS: Si vous voulez plus d'informations sur ce genre de faille, vous pouvez me MP, ou encore consulter la documentation disponible sur internet, comme sur le site de la très bonne équipe XMCO:
Fichier PDF
Édité le 02/04/2008 à 15:52:21 par Aj4x
Hors ligne tsukasagenesis # Posté le 03/04/2008 à 11:51:45
Avatar
Groupe : Membres
Une des solution pour s'en prémunire est par exemple de récupérer le header le la page incriminé pour en sortire les information :

Code : PHP - Afficher / masquer les numéros de ligne
  1. <?php
  2. $header = get_headers("url",1);
  3. if ($header['Content-Type'] === "text/html") {
  4. // et voila, si un petit malin souhaite utiliser une faille CSRF sur son site, c'est désormais impossible sans modifier son header se qui impose que ce sois sa page  :p
  5. }
  6. else {
  7. // valide
  8. }
  9. ?>

C'est très bête, facile a mettre en place et très restrictif ;)

Bien sur, il ne fait le mettre que au moment ou le membre soumet le lien, sinon c'est bien trop gourmand :-°
 
Hors ligne mt9 # Posté le 04/04/2008 à 19:51:59
Groupe : Bannis
Citation : tsukasagenesis
Une des solution pour s'en prémunire est par exemple de récupérer le header le la page incriminé pour en sortire les information :

Code : PHP - Afficher / masquer les numéros de ligne
  1. <?php
  2. $header = get_headers("url",1);
  3. if ($header['Content-Type'] === "text/html") {
  4. // et voila, si un petit malin souhaite utiliser une faille CSRF sur son site, c'est désormais impossible sans modifier son header se qui impose que ce sois sa page  :p
  5. }
  6. else {
  7. // valide
  8. }
  9. ?>

C'est très bête, facile a mettre en place et très restrictif ;)

Bien sur, il ne fait le mettre que au moment ou le membre soumet le lien, sinon c'est bien trop gourmand :-°

Ouais, non
On peut toujours vérifier que la requête vient pas du SDZ (par l'IP) ou même l'activer que quand l'url a été vérifiée, bref, ça servirait à rien
Ce qu'il faut, c'est des liens avec des tokens dedans (cf le lien déconnexion, il contient l'id du membre par exemple, ce qui limite les risques)
Seulement, on peut toujours cibler une personne particulière en mettant son ID de membre

Ta mère est tellement grosse qu'elle rentre pas dans un malloc()
 
Hors ligne Aj4x # Posté le 05/04/2008 à 15:27:57
Avatar
Groupe : Membres
Justement, si l'on veut utiliser cette faille pour un autre site que le SdZ, rajouter des TOKENs ne changera rien ....
Et il est toujours possible de cibler une page particulière, ne nécéssitant pas de token, si par exemple une faille est découverte, etc ....

Ajax
Hors ligne mt9 # Posté le 05/04/2008 à 15:54:53
Groupe : Bannis
Les autres sites n'ont qu'a se protéger, on peut pas corriger les failles des autres, faut pas pousser, on peut faire la même chose avec phpBB ou n'importe quel forum

Ta mère est tellement grosse qu'elle rentre pas dans un malloc()
 
Hors ligne tsukasagenesis # Posté le 06/04/2008 à 19:49:06
Avatar
Groupe : Membres
@mt9 : o_O

Tu est hors sujet, c'est nullement une faille des autres, c'est une faille de siteduzero :p , Lors que ne navigateur demande d'acceder a une page, il effectu une demande GET semblable a une une url normal, si la page retourné est une image,il l'affiche, sinon non. Le probleme est que c'est toi qui visite le site incriminé ! Il est par exemple possible de t'envoyer sur un site illegal pour que ton ip y sois répertorié a ton inssu ...
 
Hors ligne mt9 # Posté le 06/04/2008 à 21:17:25
Groupe : Bannis
Réexplique depuis le début, parce que j'ai rien compris

Ta mère est tellement grosse qu'elle rentre pas dans un malloc()
 
Hors ligne tsukasagenesis # Posté le 06/04/2008 à 21:57:22
Avatar
Groupe : Membres
Je vais procédé par étape :


Sur le site du zero, il est possible de mettre en lien dans ton avatar une page qui n'est pas une image, comme "http://www.google.fr" par exemple.

Sur ce constat vient se greffer la faille CSRF, Ton navigateur vois <img src="http://www.google.fr" alt="avatr" /> correspondant au lien que tu a donné pour ton avatar, Ton navigateu, ne sachant sa le contenu de la page sans la chargé fait une demande GET (il récupère la page).

C'est justement le probleme, méton que se soit un site illégal, le site en question verra qu'il est appeler par un navigateur, il lui retourne donc la page mais il prend aussi l'ip, c'est a dire que le site en question peut avoir ton ip ans leur registre bien que tu n'ai jamais vu cette page ! Il est aussi possible de voter pour un concours avec votre ip, si il y a un bloquage par ip, et je passe de la liste des autres possibilités ...

Et se ,n'est pas pire ! Pour les vieux navigateurs, quand il charge cette page pour y trouver les image, il execute aussi le code JS qui s'y trouve ! Il est ainsi possible de rediriger, récupérer les cookies (couplées a une faille XSS) et j'en passe ...

Tout sa pour dire que se n'est pas une faille si anodine que sa, bien sur sa ne met pas en périle la sécurité du serveur, par contre on n'en dira pas autant pour l'usager ...
 
Hors ligne mt9 # Posté le 06/04/2008 à 22:39:38
Groupe : Bannis
Il n'y a aucun moyen d'empêcher ça
Tu crois peut être que les forums le font, mais il n'en est rien
Il me suffit de faire une fausse image, nommée machin.png par exemple et de la mettre comme avatar, alors qu'en fait il s'agit d'un script PHP qui va renvoyer vers le site ciblé

Ta mère est tellement grosse qu'elle rentre pas dans un malloc()
 
Hors ligne tsukasagenesis # Posté le 06/04/2008 à 23:54:47
Avatar
Groupe : Membres
Non, tu na pas bien compris, il sufit juste que a chaque fois que le membre souhaite changer son avatar, tu vérifis que c'est bien une image, c'est aussi simple que sa !

Et pour l'histoire de renommer pour pieger le navigateur, tu a tout faut, car oui, il chargera la page, mais sa veut dire que tu a toi meme sur ton propre site mit le fichier, et donc l'usurpation d'ip n'a plus lieu d'etre car c'est ton script qui récolte !
 
Hors ligne mt9 # Posté le 06/04/2008 à 23:58:10
Groupe : Bannis
Citation : tsukasagenesis
Non, tu na pas bien compris, il sufit juste que a chaque fois que le membre souhaite changer son avatar, tu vérifis que c'est bien une image, c'est aussi simple que sa !

Justement, c'est impossible de vérifier que c'est une image, car vu que c'est un script PHP, je peux faire en sorte qu'il apparaisse comme une image depuis le SDZ et que ce soit un script qui redirige pour les visiteurs

Citation : tsukasagenesis
Et pour l'histoire de renommer pour pieger le navigateur, tu a tout faut, car oui, il chargera la page, mais sa veut dire que tu a toi meme sur ton propre site mit le fichier, et donc l'usurpation d'ip n'a plus lieu d'etre car c'est ton script qui récolte !

Une redirection sous la forme d'une en-tête "Location" enverra le navigateur de l'utilisateur sur la page ciblée, et c'est bien lui qui ira visiter cette page, pas le script du pirate.

Ta mère est tellement grosse qu'elle rentre pas dans un malloc()
 
Hors ligne ornithorynx # Posté le 07/04/2008 à 00:02:59
Groupe : Bannis
Citation : mt9
Citation : tsukasagenesis
Non, tu na pas bien compris, il sufit juste que a chaque fois que le membre souhaite changer son avatar, tu vérifis que c'est bien une image, c'est aussi simple que sa !

Justement, c'est impossible de vérifier que c'est une image, car vu que c'est un script PHP, je peux faire en sorte qu'il apparaisse comme une image depuis le SDZ et que ce soit un script qui redirige pour les visiteurs

Et avec un getimagesize ou autre fonction GD ?
Hors ligne mt9 # Posté le 07/04/2008 à 00:04:23
Groupe : Bannis
...
Si mon script détecte que c'est le SdZ qui demande l'image, je lui renvoie une VRAIE image
Par contre, si c'est pas le cas (visiteur normal), je met en place une redirection

Ta mère est tellement grosse qu'elle rentre pas dans un malloc()
 
Hors ligne anonyme # Posté le 07/04/2008 à 00:09:42
Groupe :
Citation : ornithorynx
Citation : mt9
Citation : tsukasagenesis
Non, tu na pas bien compris, il sufit juste que a chaque fois que le membre souhaite changer son avatar, tu vérifis que c'est bien une image, c'est aussi simple que sa !

Justement, c'est impossible de vérifier que c'est une image, car vu que c'est un script PHP, je peux faire en sorte qu'il apparaisse comme une image depuis le SDZ et que ce soit un script qui redirige pour les visiteurs

Et avec un getimagesize ou autre fonction GD ?

Et si on change le truc après l'avoir mis en tant qu'avatar sur le SdZ ?
Pour se protéger de ça, il faudrait vérifier à la volée à chaque demande de page toutes les images..
Hors ligne mt9 # Posté le 07/04/2008 à 00:15:10
Groupe : Bannis
En effet, c'est encore plus simple comme ça

Ta mère est tellement grosse qu'elle rentre pas dans un malloc()
 
Hors ligne karamilo # Posté le 07/04/2008 à 09:26:33
Aussie 'til December
Avatar
Admins
Vous pensez sérieusement qu'on va vérifier chaque image à l'affichage ?
Non le seul moyen, c'est de n'autoriser que l'upload des images sur notre serveur mais c'est un gros changement à faire.
 
Hors ligne M@teo21 # Posté le 07/04/2008 à 09:52:32
Doh ! Nuts. Mmh, donuts !
Avatar
Admins
En effet la seule solution réaliste est d'empêcher les gens d'afficher des images distantes. C'est assez contraignant pour pas mal de monde pour le moment.

Ce qui se conçoit bien s'énonce clairement,
Et les mots pour le dire arrivent aisément.

Nicolas Boileau (je suis fan)
Suivez l'aventure du SdZ et de Simple IT sur notre blog !
 
Hors ligne Aj4x # Posté le 07/04/2008 à 10:12:49
Avatar
Groupe : Membres
Il est aussi possible de "filtrer" les sites autorisées.
Ainsi, les images provenant de :
-siteduzero
-imageshack
-...
Sont autorisées.
Celà reste contraignant, mais déja moins que de n'autoriser seulement le SdZ.
LA faille reste quand même à risque faible pour le serveur, il n'est pas non plus nécéssaire de sortir la grosse artillerie ;)
Je vous invite vivement a lire la documentation que j'ai mis sur en première page :)

Cordialement,
Ajax
Hors ligne Vodka Orange # Posté le 07/04/2008 à 11:18:27
Groupe : Membres
J'approuve l'idée de n'accepter que les images venant de certains hébergeurs ! :D


 
Hors ligne tsukasagenesis # Posté le 07/04/2008 à 13:00:43
Avatar
Groupe : Membres
Mais poutant il y a bien plus simple o_O

Il faut juste vérifier avec get_image_size par exemple a la proposition de l'image sur le serveur distant, ou encore comme dit plus haut, regarder si le header correspond a une image !

Quel est l'interets de modifier son header pour faire croire que c'est une image sur un autre site ? Il n'y en a aucun, prenons l'exemple de cette page, le l'ai mit en avatar, et comme vous le voyez nous somme maintenant a 10000 page vue ... Si vous verifiez que la page contient une image, il m'aurait été impossible d'inclure cette page, c'est aussi simple que sa ! Et quel est l'interets de modifier le header pour inclure une autre page ? aucun, sa demande que le site t'appartienne, donc l'usurpation d'ip est inutile.

Tsukasa
 
Hors ligne shine-neko # Posté le 07/04/2008 à 13:54:14
Saite ita no wa My Rosy Heart
Avatar
Groupe : Membres
Ou ça serais bien de faire un site destiner a l'upload de images des Zeros
Je pense que un gentil Zer0 pourrait s'occupér de ça

La v3 de Shine-Shiina est sortit
Qui n'a jamais rêver d'apprendre a dessiner , Cuisiné japonnais dévorer de nouveaux manga fait par des copains et d'apprendre le japonais ?
=> La réponse se trouve ici
Image utilisateur

 
Hors ligne mt9 # Posté le 07/04/2008 à 14:14:31
Groupe : Bannis
Citation : tsukasagenesis
Mais poutant il y a bien plus simple o_O

Il faut juste vérifier avec get_image_size par exemple a la proposition de l'image sur le serveur distant, ou encore comme dit plus haut, regarder si le header correspond a une image !

Quel est l'interets de modifier son header pour faire croire que c'est une image sur un autre site ? Il n'y en a aucun, prenons l'exemple de cette page, le l'ai mit en avatar, et comme vous le voyez nous somme maintenant a 10000 page vue ... Si vous verifiez que la page contient une image, il m'aurait été impossible d'inclure cette page, c'est aussi simple que sa ! Et quel est l'interets de modifier le header pour inclure une autre page ? aucun, sa demande que le site t'appartienne, donc l'usurpation d'ip est inutile.

Tsukasa

Tu le fais exprès ?
Tu devrais relire le post de `Haku

  1. Je met une image sur un serveur web http://machin.com/image.png
  2. Je la met en avatar, le SdZ vérifie que c'est une image, ok ça passe, mon avatar est changé
  3. Maintenant je supprime l'image et je met un script PHP à la place

Résultat : J'ai contourné la protection du SdZ

Les seules solutions possibles sont :
  • restreindre les avatars à certains sites autorisés
  • vérifier de temps en temps les avatars (mais encore une fois, contournable par détection d'IP et le serveur a déjà assez à faire comme ça)
  • ne laisser que les zUploads comme possiblité (bof)
  • laisser tel que c'est, ce qui n'est pas plus mal (on peut faire la même chose sur tous les forums qui acceptent l'insertion d'image après tout, et puis qui n'a jamais vu la signature "Votre ISP est ... Votre IP est ... dans une image")

Ta mère est tellement grosse qu'elle rentre pas dans un malloc()
 
Hors ligne tsukasagenesis # Posté le 07/04/2008 à 18:05:25
Avatar
Groupe : Membres
@mt9 : Ma question est simple : mais ou est l'intérêt de mettre un script php a la place ? tu m'explique la ? quel rapport avec la faille csrf ??? Je te parle d'usurpation d'ip, tu n'usurpe pas une ip en modifiant une image par un script php, au pire il le chargera mais sa ne ferra rien et sa ne risque en rien d'utiliser ton ip ... vois tu se que j'essaye de faire comprendre ?

Pour ce qui est de la faille sur les vieux navigateurs aucune solution ne peut etre mise en place, par contre pour l'usurpation d'ip c'est simple.
Édité le 07/04/2008 à 18:07:43 par tsukasagenesis
 

Retour au forum "Rapports de bugs" ou à la liste des forums

Vous devez être inscrit pour pouvoir poster des messages

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 607 Zéros connectés | Requêtes SQL 7 requêtes | Temps de génération de la page : Total (SQL) 0.0594s (0.0332s)