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
盲目地运行它。