2016-02-12 41 views
0
第一线

我最近的服务器被黑客攻击和PHP代码注入,并在每个PHP文件的第一行有类似使用SED删除之间的一切,包括代码

<?php $jybcqmhk = 'x24- x24*<!~! x24/%t2w/ //truncated code ?><?php 

代码本身在每个文件上稍有不同,但通常在第一个之后?>我的实际代码开始。

有没有办法使用类似SED的东西,我可以删除第一行之间的所有内容,然后离开其余的。

我已经尝试了几件事情,但最终有一个额外的PHP开放标签或意外删除php结束标记后的行代码。

例如,这工作的地方代码开始与PHP开放标签,但打破了别的。

find ./ -iname '*.php' -exec sed -i '1 s/^.*$/<?php/g' {} \; 
+6

你是否修补了他们通过的原始洞呢?因为在不修复漏洞的情况下删除这些行是没有意义的。 – Gordon

+5

你会更好地重建整个网站,并试图弄清楚他们是如何得到的 – RamRaider

+0

我知道安全漏洞在哪里,但我想先清理文件,然后再将网站移动到新的主机。 – ToxicChili

回答

2

也许这可以帮助:

find ./ -iname '*.php' -exec sed -i '1 s/<?php/\n&/2;s/<?php.*\n//' {} \; 

sed命令运行2个替换:在新线的第一个隔离第一<?php ?>命令,第二个删除。

+1

如果使用三元运算符,则不起作用(例如):'sed'1 s/ //'<<<'<?php $ a = 1? 2:3; ?>''< - 不起作用 – hek2mgl

+1

感谢您的评论@ hek2mgl,我更新了我的答案 – SLePort

+0

谢谢我会试试这个:-) – ToxicChili