我的网站感染了一些恶意软件,这些恶意软件已在至少3135个文件中插入了恶意代码(我所有的wordpress网站)。
这是被感染的文件之一:http : //pastebin.com/FXU1ht4R
这是我想要的输出:http : //pastebin.com/YPJwjiWH
我不知道的Unix命令,除了一些简单的想法find
和grep
命令。
经过研究后,我发现了有关该sed
命令的信息,但是我不知道该如何使用它。
从上面的代码可以看到,通常的模式是将代码插入每个文件的顶部,即在原始<?php
标签之前(这意味着原始<?php
标签位于第二个标签之前)。
所以我想我可以找到所有包含cnajwp =
并删除第二个<?php
标签之前的所有文件的文件。
我可以cnajwp
通过使用找到包含的文件
find * -type f -name "*.php" -exec grep -l "cnajwp =" {} \;
但我不知道如何替换<?php
出现这些情况的第二个标记之前的所有内容。
这里有人可以帮我吗?
这将使用您的命令查找受感染的文件,并将列表提供给xargs,后者在第一行运行一个表达式。
find * -type f -name "*.php" -exec grep -l "cnajwp =" {} \; |
xargs sed -i -E '1s/^(<\?php) \$ocnajwp =.*$/\1/'
根据您的输入文件样本,这应该可以解决问题。
由于在此期间,您发现了文件,感染的位置略有不同,并且您最终得到了一些文件,其中前两行都包含<?php
,因此您可以运行以下命令来清理这些文件:
find * -type f -name "*.php" -exec \
gawk -i inplace 'NR==2 && /^<\?php$/ {next} 1' {} \;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句