从PHP文件中删除特定行

3
我的网站被黑客攻击了,每个php文件的第一行都有以下代码:<?php $knitglx = '<%G]y6d]281Ld]245]K2 ... $knitglx=$fmfqhx-1; ?><?php (非常长)。由于我使用的是WordPress,有数百万个文件,逐个打开并删除这行代码是不可能的。有没有办法一次性删除它们?
我读到了一些关于一些sed功能的内容,但我不知道如何使用它。经过一些讨论后,我知道那不能解决我的问题,所以现在我正在寻找一种扫描和删除文件中病毒的方法。任何帮助都可以。

下面是我能想到的命令:find . -type f -name "*.php" -exec sed -i '<?php \$knitglx.*$/d' {} \; - Lando
从备份或之前的git提交还原。你不能确定这是跨越百万个文件的唯一更改。 - Matt
我应该把这个函数放在哪里? - Aleksa Ristic
在一个 shell 提示符下 -- 你应该拥有对托管账户的 shell 访问权限。 - Lando
你应该用来自代码库下载页面的新文件覆盖任何 WordPress 文件,你自己的自定义文件应该会更少且更容易处理,但理想情况下,你应该有它们的备份/源代码版本控制。 - apokryfos
1个回答

3
如果您的网站被黑客攻击了,您绝对不应该尝试清理他们注入的源代码!很可能您会遗漏某些内容,并且可能会将恶意软件或其他内容传播给您的WordPress网站访问者。同时,您需要找出为什么会被黑客攻击并修补漏洞。

确保从服务器中删除所有文件并更改所有密码(FTP,WordPress等等)。

以下是您可以采取的措施:

1)联系您的提供商并要求设置最新的干净备份

2)设置您自己的最新干净备份

3)如果您真的没有备份(这非常糟糕),请执行以下操作:

  • 进行全新的WordPress安装。
  • 下载wp-content文件夹并检查其中是否有任何恶意代码
  • 下载您的数据库并检查其中是否有任何恶意代码
  • 将干净的代码/数据库放入WordPress安装中

简单地删除每个文件的第一行可能不足以解决问题。但是有解决方案:

批处理文件以删除文本文件的前三行

通过批处理文件删除txt文件中的某些行

注意:使用像Netbeans或IntelliJ这样的IDE,您可以在大量PHP文件上进行搜索/替换。如果第三步是唯一的选择,这也可能有所帮助。

第三种可能性并不好,因为这意味着需要大量工作...祝你好运!


如果我现在备份,然后安装新的WordPress并恢复备份,再进行扫描以查看哪些文件已被感染,这样做有助于缩小受感染文件的数量吗? - Aleksa Ristic
你不能失去 wp-content 目录之外的任何文件,因此你应该明确缩小到这个目录。如果你不使用自定义主题,你也可以用一个干净的主题替换 /wp-content/themes/ 中的文件。然而,检查所有上传的文件(图片等)是否感染也很重要,但这并不容易。也许一个反病毒扫描器可以帮助。 - Blackbam
还有一件事。我使用的是一些较旧版本的WordPress。如果我下载最新版本并插入,一切都会没问题吗? - Aleksa Ristic
如果您不确定,也可以下载旧版本。更新到新版本的成功与否完全取决于项目代码的质量。通常情况下,这不应该是一个问题。 - Blackbam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接