Sed 命令替换每个文件中的代码

Sed 命令替换每个文件中的代码
sed -ri  '1 s/.*<\?php \$xgzdxgn.*\$tdjwdrzy.*\$vbtpmtzqq-1; \?>//g' *.php

如何在单个命令中对文件夹和子文件夹运行此命令(针对所有 php 文件)。当我尝试使用此命令时仅适用于当前目录,抱歉我缺乏知识:(

答案1

您不应该尝试用这样的创可贴来修复受感染的服务器。您的服务器上仍存在原始漏洞,并且您的服务器仍由攻击者拥有。

唯一可靠的方法是从已知的备份中恢复,然后应用所有可用的操作系统升级。当然,如果您的版本已停产,则需要升级整个操作系统。

答案2

sed 实用程序无法自行执行此操作,因为它没有递归目录选项。相反,您必须执行某些操作来查找文件并将其输入 sed,例如

find /path/to/start -type f -name '*.php' -print 0 | xargs -0 sed -ri  '1 s/.*<\?php \$xgzdxgn.*\$tdjwdrzy.*\$vbtpmtzqq-1; \?>//g'

应该可以解决问题。最好先测试一下,而不是-i盲目地运行它。

相关内容