Je viens solliciter votre aide face à un problème de hacking. En effet depuis quelques temps, mon serveur en carton installé par mmo est la proie de vilains garnements, qui utilisent mes formulaires d'upload pour installer leurs scripts sur le serveur et modifier de plus en plus régulièrement tous mes javascripts et mes css externes pour qu'ils chargent un fichier malveillant sur l'ordinateur de mes visiteurs.
Bien sûr les individus en question changent d'ip comme de chaussettes, impossible de les bannir donc.
Voilà ma question : Comment est-il possible que leurs fichiers php soient uploadés et arrivent dans le dossier normal, alors que le move_uploaded_flie n'arrive qu'après un test de type MIME (jpeg, gi et png) et d'extension (pareil). Quand je tente moi même d'uploader un fichier php, il ne passe pas, mais les leurs si. J'ajouterai pour finir que le script renomme le fichier en ajoutant un long préfixe généra aléatoirement. Les premières fois j'ai pu le constanter sur les scripts uploadés, maintenant plus rien...
Merci par avance de l'aide que, je ne doute pas, vous m'apporterez si vous le pouvez
c'est parce qu'il ne faut absolument pas se fier au type mime, les pirates peuvent mettre ce qu'ils veulent dedans, pas en forcément en rapport avec le fichier lui-même.
utilise getimagesize pour vérifier le type des images, et vérifie au moins l'extension pour les autres fichiers.
à+
un fichier doit avoir une extension d'un fichier qui s'exécute, pour pouvoir être exécuté, à ma connaissance en tt cas ! donc vérifie qu'il n'y a plus rien de mailicieux sur ton serveur, mets en place les vérifs que j'ai dite (et n'autorise que certaines extensions bien définies), et je pense que ça devrait être bon.
à+
bien sûr que mon fichier n'est aps éxécutable, le but était de savoir si un fichier passerait avec un type mime correct mais pas l'extension, ce qui n'est pas le cas.
Ah oui, après coup je me dis que ce serait bien de préciser que la variable $photo contient au départ l'ancienne photo d'un membre existant, ou blason.jpg pour un nouveau membre. ^^
Ce n'est pas avec ce bout de code que tu vas te faire pirater, ou alors ce serait une grande première et tout le monde aurait de quoi s'inquiéter. Tu n'as qu'à faire un listing de tous les fichiers qui transitent par ce biais et tu seras fixé. La faille doit être ailleurs. Si ça se trouve tu t'es fait prendre tes accès ftp et tu ne le sais même pas.
à+
Pourtant les fichiers "porte" arrivent bien dans le dossier 'images/avatars/'.
Remarquez, c'est peut-être un leurre, les premiers (avant que je vérifie l'extion) se voyaient ajouter l'uniqid, et maintenant plus rien...
Je vias changer mes accès ftp pour voir.
J'ai changé les accès du FTP et je l'ai même fermé, mes ses logs de connection ne me donnent rien de suspect. D'un côté, c'est vrai que les informations laissées dans les logs d'Apache s'amenuisent aussi avec le temps...
je les vide régulièrement, les plus évidents ne sont plus présents
On avait un catdoor.php précédé d'un uniqid, et é autres fichiers comme ça, qui une fois que je leur ai appliqué une modification pour ne pas avoir à entrer de mot de passe, se sont révélés être de véritables usines à jacking, avec affichage de ll'arborescence du serveur, lecture et modification des fichiers, créaytion de fichiers "flood" un peu partout, mail anonyme, autosuppression et autoduplication. J'ai été très impressioné mais je les ai supprimés au bout d'un moment pour ne pas prendre de risques. Les fichiers qui m'arrivent maintenant sont moins amusants, ils vérifient un mot de passe envoyé par POST (par un formualire externe donc) et lisent le contenu d'un fichier envoyé toujours pas POST, pour l'exécuter par eval().
Je vais vous donner quelques lignes "suspectes", elles sont difficiles à trouver dans mes logs de 27502 ko pour 10 jours.
Tous les fichiers cités sont des fichiers pirates, depuis supprimés par mes soinsn mais qui reviennent un peu trop régulièrement à mon goût. Bien entendu, les ip utilisées changent tout le temps.
A chaque modification de mes javascripts et css externes, une ligne de code est ajouéte au mileu d'une looongue série de lignes blanches, qui demande le chargement d'un javascript spécifique dont je ne comprends pas bien ce qu'il fait.
J'ai l'impression que la moitié de son travail consiste à recenser par où son arrivés les visiteurs, mais l'autre...
Soit il a (avait?) tes codes d'accès, soit il arrive par un autre fichier que le bout de code que tu as mis, soit il a piraté le serveur lui-même... pour ma part je ne vois pas ce qu'on pourrait te dire de plus pour t'aider. à+
En coupant le ftp et en changeant de serveur (j'ai installé un vieux backup de mon site sur mon ordinateur personnel, et j'ai redirigé mon port 80 dessus), je me suis fait hacker le nouveau serveur. J'en déduis que l'attaque venait bien de l'extérieur. Autre point important. Mon antivirus a réagi en bloquant l'arrivée du fichier, ce qui n'a pas empêché de modifier tous mes js et css. Sur mes logs je peux voir que l'intrusio s'est faite entre 19h11 et 19h17 (à 11 les visiteurs ne chargeaient pas le "virus", à 17 si), mais aucune ligne "suspecte" entre ces 2 instants... Pourtant je n'ai redirigé que le port 80 sur mon ordinateur...
Je veux bien donner, amis je ne serait pas ce qui serait intéressant pour ça en dehors de ma vérification d'upload. A part peut-être le formulaire, mais là rien de compliqué, c'est un formulaire en post et multipart, avec un élément file...