几天前,我在我的服务器上发现了许多带有恶意代码的受感染文件(一些wordpress,prestashop和一些php应用程序)。 我可以使用简单的命令,但缺乏SSH知识会妨碍我找到自己的解决方案...
要搜索感染,我使用find命令:
find . -name "*.php" -type f -perm 600 -print0 | xargs -0 grep -iHlnrE 'filesman|eval.*base64_decode|PCT4BA6ODSE|globals|b374k' 2> /dev/null
大多数受感染的文件都在第1行修改(但它们并非完全相同)。例如缩短行:
<?php $jefknybs = 'e]53Ld]53]Kc]55Ld]55#*<%bG9}:}.}-}!#*<%nfd> (...) $jefknybs=$ypoqiutce-1; ?><?php
<?php
。list.txt
,然后使用一些循环删除恶意代码?你能帮忙吗?
答案 0 :(得分:0)
关于Prestashop
我看到的主要问题是 - php文件具有写权限(与大多数主机一样),但他们并不真正需要它,例如Prestashop仅对某些文件/文件夹http://doc.prestashop.com/display/PS16/Installing+PrestaShop
如果你没有核心更改/ override文件夹,你可以轻松替换所有的php文件。模块也一样。
我不记得Prestahop php文件有多个<?php ... ?>
标签的情况,所以如果有多个,你可以删除第一个条目。注意 - 不是第一行,因为在你的例子中?><?php
之间没有换行符。
另一个想法是,如果更多的邮件代码是“在线人”,您可以计算<?php ?>
内的换行符并删除受感染的阻止。
另外不要忘记检查/替换.htaccess和.js文件和/ download / upload文件夹,有些Presta版本存在问题。
希望它有所帮助。
P.S。当然先备份。
<强> UPD 强>
删除恶意代码,您可以使用此行
find . -name '*.php' | while read line; do if [[ $(grep -o '<?php' $line | wc -l) > 1 ]]; then sed -i 's/<?php.*?>//' $line; fi; done
澄清:
php
扩展名的文件,并在while ... done