删除恶意代码

时间:2016-10-04 07:15:36

标签: wordpress sed find prestashop

几天前,我在我的服务器上发现了许多带有恶意代码的受感染文件(一些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
  1. 我认为我可以将find和sed结合起来搜索受感染的文件并删除恶意代码,或将整个第1行替换为<?php
  2. 第二个想法是找到并将受感染的文件名保存到list.txt,然后使用一些循环删除恶意代码?
  3. 你能帮忙吗?

1 个答案:

答案 0 :(得分:0)

  1. 当我遇到像你这样的情况时,在我的一个客户托管我使用PHP Shell Detector并修改它以半手动模式删除或更改每个文件。有一些“错误的检测”,但它有助于大多数文件。
  2. 关于Prestashop

    1. 我看到的主要问题是 - php文件具有写权限(与大多数主机一样),但他们并不真正需要它,例如Prestashop仅对某些文件/文件夹http://doc.prestashop.com/display/PS16/Installing+PrestaShop

    2. 需要这些权限
    3. 如果你没有核心更改/ override文件夹,你可以轻松替换所有的php文件。模块也一样。

    4. 我不记得Prestahop php文件有多个<?php ... ?>标签的情况,所以如果有多个,你可以删除第一个条目。注意 - 不是第一行,因为在你的例子中?><?php之间没有换行符。

    5. 另一个想法是,如果更多的邮件代码是“在线人”,您可以计算<?php ?>内的换行符并删除受感染的阻止。

    6. 另外不要忘记检查/替换.htaccess和.js文件和/ download / upload文件夹,有些Presta版本存在问题。

    7. 希望它有所帮助。

      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
      • 中循环播放
      • 检查文件中是否有多个php打开标签,然后文件被感染,我们用sed删除第一次出现的php代码(从打开到关闭标签)