|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Invité(e)
Messages : n/a ![]() |
Bonjour,
Dans le backoffice de mon site, il y a la possibilité d'uploader des images pour illustrer les pages du site. Le soucis c'est que des hackers réussissent à accéder à l'upload et téléchargent des images qui ne le sont pas en fait mais ce sont des PHP renommés en .gif ou en .jpg, ils connaissent le chemin où sont les fichiers uploadés et appellent juste donc la fausse image pour lancer le PHP. Comment vais-je me protéger? Je me demande même comment ils arrivent à exécuter ce fichier php renommé en jpg |
00
|
|
|
#2 |
|
Membre régulier
![]() |
Au moment de l'upload tu vérifies comment le type de fichier ? par l'extension ?
Si c'est le cas tu peux tester par le MIME TYPE du fichier uploadé. Tu as une fonction en PHP appelée finfo qui devrait pouvoir t'aider : http://fr.php.net/manual/fr/function.finfo-file.php
__________________
[/HS] une pétition pour la libération des drivers matériels ici J'adorerai changer le monde, mais pas moyen de mettre la main sur le code source |
|
|
00
|
|
|
#3 |
|
Invité(e)
Messages : n/a ![]() |
Oui c'est ça, je testais l'extension! Mais bon tester le contenu du fichier ralentirait aussi le site
Je pense que je dois aussi chercher les moyens pour que le hacker ne puisse pas accéder au formulaire d'upload. Le soucis c'est qu'il faut s'authentifier pour ouvrir le formulaire mais pour l'upload il n'y en a pas puisque j'utilise un code tiers |
00
|
|
|
#4 |
|
Membre régulier
![]() |
Tester le type MIME est plutôt rapide.... Je l'utilise sans voir de ralentissement (même si j'avoue que mon script n'est pas très long et mon traitement ne fait pas grand-chose)...
De plus en testant le type MIME tu ne lis pas le fichier complet mais des informations que le fichier détient (un peu comme un header d'une requête HTTP pour simplifier)... Au pire essaye et si tu vois une perte de perf' trop importante reviens sur ta version précédente...
__________________
[/HS] une pétition pour la libération des drivers matériels ici J'adorerai changer le monde, mais pas moyen de mettre la main sur le code source |
|
|
00
|
|
|
#5 |
|
Membre actif
![]() Inscription : décembre 2006 Messages : 184 ![]() |
tu n'as pas le choix faut tester le type MIME comme dit plus haut une extension de fichier n'a aucune valeur sure
|
|
|
00
|
|
|
#6 |
|
Invité(e)
Messages : n/a ![]() |
Le fond du problème n'est pas vraiment que le hacker upload un faux jpg ou gif mais qu'il accède au script d'upload sans s'authentifier
L'authentification est gérée par une classe php qui crée une variable globale $GLOBAL["user"], or j'utilise un code tiers (ajaxfilemanager) pour l'upload d'image donc je me me demande comment peut-on l'utiliser dans ajax_file_upload.php de AjaxFileManager for TinyMCE??? |
00
|
|
|
#7 | |
|
Invité(e)
Messages : n/a ![]() |
Citation:
Ce que je cherche aussi c'est comment interdire l'exécution de scripts dans un répertoire par htaccess ou autre? En effet, je suis victime du hack avec un upload d'un fichier "pic.php.gif", je ne comprends pas comme le hacker arrive à exécuter ce fichier moitié GIF moitié PHP |
|
00
|
|
|
#8 |
|
Membre régulier
![]() |
essaie de mettre les permissions sur ton fichier à 666 (c'est à dire en lecture/écriture mais pas en exécution) mais je ne suis pas sûr que ça fasse grand-chose...
__________________
[/HS] une pétition pour la libération des drivers matériels ici J'adorerai changer le monde, mais pas moyen de mettre la main sur le code source |
|
|
00
|
|
|
#9 | ||||||
|
Membre actif
![]() Inscription : décembre 2006 Messages : 184 ![]() |
Citation:
vérifier la liste des extensions exécutables 2) test du type mime Code :
Code :
Citation:
ps: si un hacker a déjà déposé des fichiers il faut bloquer ton site faire le ménage de fichier intrus changer tous les passwords voila j'en sais pas plus bon courrage |
||||||
|
|
00
|
|
|
#10 |
|
Membre actif
![]() Inscription : février 2009 Messages : 150 ![]() |
Salut, il faut que tu arrive a mettre un test de la fameuse variable $GLOBAL["user"] avant que l'upload ne commence.
Tester le type mime, c'est bien aussi et te le conseil, mais ça n'empechera pas l'intrus d'uploader. |
|
|
00
|
|
|
#11 |
|
Membre actif
![]() Inscription : décembre 2006 Messages : 184 ![]() |
regarde ceci http://php.net/manual/fr/security.globals.php
|
|
|
00
|
|
|
#12 | |
|
Membre actif
![]() Inscription : février 2009 Messages : 150 ![]() |
Citation:
|
|
|
|
00
|
|
|
#13 | |
|
Invité(e)
Messages : n/a ![]() |
Citation:
La portée de $GLOBAL["user"] n'atteigne pas en fait le code tiers d'upload d'image. Donc je remets la classe d'authentification utilisée par mon site dans le code de l'upload donc un 2ème formulaire de connexion lors de l'upload, c'est le mieux qu'on puisse faire |
|
00
|
|
|
#14 |
|
Membre actif
![]() Inscription : février 2009 Messages : 150 ![]() |
Un bon moyen serait d'avoir un $_SESSION['user'] plutot que $GLOBAL afin de le récupérer facilement sur les pages appelées lors de l'upload.
|
|
|
00
|
|
|
#15 | |||
|
Invité(e)
Messages : n/a ![]() |
Citation:
- ce n'est pas un soucis de passwords découverts - le hacker upload bien un fichier pic.php.gif et il arrive à l'exécuter mais je ne sais pas COMMENT ??? nextdev> Effectivement c'est de la session, de plus je n'aime pas trop le $_SESSION['user'] car je suis sur du mutualisé Code :
|
|||
00
|
|
|
#16 | ||
|
Membre régulier
![]() |
Pour résumer ce qui a été dit :
- Vérifie la conf de ton serveur (httpd.conf pour apache) - Lors de l'upload vérifie le type MIME du fichier uploadé et refuse tout ce qui n'est pas une image (un simple Code :
__________________
[/HS] une pétition pour la libération des drivers matériels ici J'adorerai changer le monde, mais pas moyen de mettre la main sur le code source |
||
|
|
00
|
|
|
#17 | |
|
Membre actif
![]() Inscription : février 2009 Messages : 150 ![]() |
Citation:
Pourquoi ne pas utiliser la session, es tu chez ovh ? |
|
|
|
00
|
|
|
#18 |
|
Membre Expert
![]() Inscription : janvier 2006 Messages : 951 ![]() |
c'est quoi le problème des sessions chez OVH? chez moi tout fonctionne à merveille.
je suis un peu déçu parce que le titre du message était croustillant et que la solution est plutôt standard.
__________________
PHP fait nativement la validation d'adresse électronique Utilisez le bouton résolu! |
|
|
00
|
|
|
#19 |
|
Membre Expert
![]() Inscription : septembre 2010 Messages : 1 239 ![]() |
Et tu as pensé à faire un getimagesize lors de l'upload de tes images ? Normalement ce test est assez restrictif et comme vous n'en avez pas encore parlé...
|
|
|
00
|
|
|
#20 |
|
Membre actif
![]() Inscription : février 2009 Messages : 150 ![]() |
Il n'y a justement pas de problème chez ovh, et d'ailleurs le répertoire /tmp/ ou sont stocké les sessions par défaut n'est plus accessible sur leurs serveurs.
Donc leur config de base en mutualisé ne pose a priori plus de risque, ou pas plus qu'un dédié. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com