Bande de farceurs...

Signaler
Messages postés
128
Date d'inscription
lundi 8 août 2005
Statut
Membre
Dernière intervention
20 juillet 2009
-
Messages postés
128
Date d'inscription
lundi 8 août 2005
Statut
Membre
Dernière intervention
20 juillet 2009
-
  Bonjour,

  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

Nitruk

20 réponses

Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
Hello,

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.
à+
Messages postés
128
Date d'inscription
lundi 8 août 2005
Statut
Membre
Dernière intervention
20 juillet 2009

Comme je l'ai écrit, je teste aussi l'extension...

Nitruk
Messages postés
128
Date d'inscription
lundi 8 août 2005
Statut
Membre
Dernière intervention
20 juillet 2009

Après vérification, un vrai png dont je change l'extension en .php ne passe pas.

Nitruk
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
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.
à+
Messages postés
128
Date d'inscription
lundi 8 août 2005
Statut
Membre
Dernière intervention
20 juillet 2009

mais puisque je t'ai dit que c'est fait...

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.

Nitruk
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
on peut voir ton script ?

/**
* @author coucou747 <coucou747@hotmail.com>
* @see irc://cominweb.uni-irc.net/#programmation
*/
Messages postés
128
Date d'inscription
lundi 8 août 2005
Statut
Membre
Dernière intervention
20 juillet 2009

Bien entendu, le voilà :

if(is_uploaded_file($_FILES['photo']['tmp_name']) && $_FILES['photo']['error'] == 0){
     $tab1 = explode('/',$_FILES['photo']['type']);
     $tab2 = explode('.',$_FILES['photo']['name']);
  $n = count($tab2) - 1;
  $tab3 = getimagesize($_FILES['photo']['tmp_name']);
     if($tab1[0] == 'image' && ($tab2[$n] == 'jpg' ||  $tab2[$n] == 'jpeg' ||  $tab2[$n] == 'gif' ||  $tab2[$n] == 'png' ||  $tab2[$n] == 'bmp') && $tab3[2] != ''){
    if($photo != 'blason.jpg') unlink('images\\avatars\\'.$photo);
    $photo = md5(uniqid(rand())).$_FILES['photo']['name'];
          move_uploaded_file($_FILES['photo']['tmp_name'],'images/avatars/'.$photo);
    }

Nitruk
Messages postés
128
Date d'inscription
lundi 8 août 2005
Statut
Membre
Dernière intervention
20 juillet 2009

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. ^^

Nitruk
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
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.
à+
Messages postés
128
Date d'inscription
lundi 8 août 2005
Statut
Membre
Dernière intervention
20 juillet 2009

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.

Nitruk
Messages postés
128
Date d'inscription
lundi 8 août 2005
Statut
Membre
Dernière intervention
20 juillet 2009

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...

Nitruk
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
on peut voir un log apache de truc que tu juges "suspect" ?
Messages postés
128
Date d'inscription
lundi 8 août 2005
Statut
Membre
Dernière intervention
20 juillet 2009

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.

202.216.177.14 - - [29/Feb/2008:14:28:01 +0100] "POST /images/qabata.php HTTP/1.0" 404 339
202.216.177.22 - - [29/Feb/2008:14:29:21 +0100] "POST /images/avatars/afor.php HTTP/1.0" 404 345
87.101.244.6 - - [29/Feb/2008:14:29:27 +0100] "POST /downs/images/qayub.php HTTP/1.1" 404 356
219.101.39.218 - - [29/Feb/2008:14:29:43 +0100] "POST /images/qabata.php HTTP/1.1" 404 351
62.87.160.214 - - [29/Feb/2008:14:30:21 +0100] "POST /downs/uyep.php HTTP/1.0" 404 336
62.87.160.214 - - [29/Feb/2008:14:31:25 +0100] "POST /downs/images/qayub.php HTTP/1.0" 404 344
79.127.144.2 - - [29/Feb/2008:14:32:02 +0100] "POST /images/qabata.php HTTP/1.0" 404 339
202.141.41.53 - - [29/Feb/2008:14:32:37 +0100] "POST /downs/uyep.php HTTP/1.0" 404 336
87.101.244.6 - - [29/Feb/2008:14:32:43 +0100] "POST /images/avatars/afor.php HTTP/1.1" 404 357
202.216.177.22 - - [29/Feb/2008:14:40:52 +0100] "POST /images/qabata.php HTTP/1.0" 404 339
201.220.77.184 - - [29/Feb/2008:14:41:00 +0100] "POST /images/avatars/afor.php HTTP/1.0" 404 345
201.220.77.184 - - [29/Feb/2008:14:41:24 +0100] "POST /downs/images/qayub.php HTTP/1.0" 404 344
87.101.244.6 - - [29/Feb/2008:14:41:31 +0100] "POST /images/qabata.php HTTP/1.1" 404 351
62.73.100.20 - - [29/Feb/2008:14:42:04 +0100] "POST /downs/uyep.php HTTP/1.0" 404 336
209.182.120.238 - - [29/Feb/2008:14:43:08 +0100] "POST /images/avatars/afor.php HTTP/1.0" 404 345
207.250.10.170 - - [29/Feb/2008:14:43:09 +0100] "POST /images/qabata.php HTTP/1.0" 404 339
80.227.1.101 - - [29/Feb/2008:14:44:37 +0100] "POST /images/avatars/afor.php HTTP/1.1" 404 357

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...

Nitruk
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
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. à+
Messages postés
128
Date d'inscription
lundi 8 août 2005
Statut
Membre
Dernière intervention
20 juillet 2009

Merci quand même...

Nitruk
Messages postés
128
Date d'inscription
lundi 8 août 2005
Statut
Membre
Dernière intervention
20 juillet 2009

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...

Nitruk
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
.... sans plus de code de ton site, impossible de t'aider...

/**
* @author coucou747 <coucou747@hotmail.com>
* @see irc://cominweb.uni-irc.net/#programmation
*/
Messages postés
128
Date d'inscription
lundi 8 août 2005
Statut
Membre
Dernière intervention
20 juillet 2009

j'ai donné le code par lequel passe l'oupload, mais il est grand mon site, je ne vais pas trout donner, vous ne le liriez pas...

Nitruk
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
bien, comme tu veux... c'est domage pour ton site :)

/**
* @author coucou747 <coucou747@hotmail.com>
* @see irc://cominweb.uni-irc.net/#programmation
*/
Messages postés
128
Date d'inscription
lundi 8 août 2005
Statut
Membre
Dernière intervention
20 juillet 2009

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...

Nitruk