如何清理被黑的 WordPress 网站或博客

已发表: 2021-02-16

无论您的 WordPress 网站是否已被黑客入侵并且您目前处于损害控制之中,或者您是否正在为最坏的情况做准备,本文将指导您完成清理被黑客入侵的 WordPress 网站的过程。 该过程以易于遵循的分步格式记录,以帮助您完成以下任务:

  • 重新控制您的 WordPress 网站
  • 确定可能的感染源
  • 查找感染和恶意代码
  • 删除任何恶意软件、后门和 Web Shell
  • 从任何恶意软件列表(例如 Google 安全浏览数据库)中删除您的域
  • 防止再次发生

您被黑的 WordPress 网站真的被黑了吗?

被黑的 WordPress 网站

有时,当 WordPress 网站被黑客入侵时,例如,如果您的网站遭到破坏,这一点非常清楚。 在其他情况下,它可能不是那么明确。 在开始 WordPress 清理过程之前,请确认您的 WordPress 网站实际上已被黑客入侵,这不是不相关的技术问题。 阅读文章如何检查我的 WordPress 是否被黑客入侵,以确定您的网站或博客是否被黑客入侵。

重新获得控制权

重新获得控制权取决于您可能因攻击而失去多少访问权限。 例如,在获得对服务器的访问权后,攻击者可能会轮换凭据以阻止合法用户访问服务器,或者他们可能会更改 WordPress 管理员密码以阻止 WordPress 管理员登录。

虽然这在很大程度上取决于您的设置,但您的托管服务提供商很可能会帮助您恢复对共享托管环境或运行您网站的虚拟专用服务器 (VPS) 的访问。 如果您无法访问 WordPress 管理员,请按照官方 WordPress 指南重置管理员密码。

进行备份

即使您有 WordPress 备份解决方案,也请备份当前的 WordPress 网站。 由于多种原因,在此阶段进行 WordPress 备份非常重要,包括以下原因。

  • 备份允许您在稍后阶段分析感染,
  • 一些托管服务提供商可能会采取删除被黑网站作为预防措施,以防止其传播恶意软件或垃圾邮件——取决于您的托管服务提供商,这可能会在没有警告的情况下发生,
  • 如果您当前没有备份策略,您可以在事情变得更糟之前从该备份中挽救一些网站内容。

此外,如果您在虚拟专用服务器 (VPS) 上运行 WordPress,请考虑在可能的情况下拍摄整个虚拟机的快照(请记住,这通常会产生额外费用)。 拍摄快照时,请记住,如果您使用任何外部卷来托管您的 WordPress 安装(例如网络附加存储),您还应该复制任何存储主要 WordPress 安装、 wp-content 、您的 MySQL 数据库的卷,以及任何 Web 服务器访问和错误日​​志。

从备份恢复

如果您制定了备份策略,那么现在是时候将其付诸实施了。 假设您可以访问最近的备份,恢复可能是让您自己恢复在线的最快方式——但是不要误会,虽然从 WordPress 站点的备份恢复可能会消除感染并允许您再次运行,但它不会解决您首先被黑客入侵的原因

如果您的 WordPress 网站由于被利用的漏洞或安全漏洞而被黑客入侵,那么下一步必须努力弄清楚发生了什么(如果可能)。

如果我没有备份,或者我无法成功恢复我的备份怎么办?

如果您没有备份,则可以成功恢复,具体取决于情况的严重程度,您可能希望将 WordPress 网站置于维护模式,以便您在恢复网站的同时让访问者知道他们应该稍后再回来查看。 同时,继续遵循本指南的其余部分。 通过使用 wp_maintenance() 1将您的网站置于维护模式函数,WordPress 将返回一个 503 HTTP 状态码。 503 状态向 Google 和其他抓取工具表明该页面出现问题,他们应该稍后再回来查看。

503 HTTP 响应对 SEO 很重要,因为它可以防止在您的网站暂时关闭时对您的搜索排名造成损害。 有关 503 HTTP 状态代码及其在 SEO 中的重要性的更多信息,请查看 Yoast 关于该主题的文章。

确定 WordPress 是如何被黑的

备份您的网站后,议程上的下一件事就是尽可能多地找出发生的事情,即攻击者利用哪个安全漏洞来访问您的 WordPress 安装。

检查活动日志、Web 服务器和 FTP 服务器日志

如果您保留 WordPress 活动日志,这可能是开始分析的最佳位置。 看看您是否可以识别任何可疑行为。 查找新创建用户的事件或用户密码更改。 还要检查是否有任何 WordPress、插件或主题文件被修改。

您还应该查看 Web 服务器、FTP 服务器和操作系统日志文件,了解异常或可疑行为。 虽然这可能是一个压倒性的过程,但您需要首先检查是否有来自单个IP 地址的奇怪流量。 您可以使用各种实用程序 shell 脚本和一个衬里来做到这一点。 要实时查看 Web 服务器日志,GoAccess 可能会派上用场。

未使用和过时的 WordPress 插件和主题

从 WordPress 仪表板和目录/wp-content/plugins/中检查已安装插件的列表。 是否正在使用所有 WordPress 插件? 它们都是最新的吗? 检查主题和主题目录/wp-content/themes/ 。 您应该只安装一个主题,即您正在使用的主题。 如果您使用的是子主题,您将有两个目录。

未使用的 WordPress 代码和安装

剩余和未使用的代码是另一个常见问题。 有时,开发人员和系统管理员会直接在服务器上更新文件,并使用.old.orig.bak等扩展名备份原始文件。 攻击者经常利用这种不良做法,并且寻找此类备份文件的工具广泛且容易获得。

它的工作方式是攻击者试图访问诸如index.php.old之类的文件。 通常, .php文件配置为由 PHP 解释器执行,但通过在文件末尾添加.old (或其他)扩展名会导致 Web 服务器将文件提供给用户。 通过简单地猜测备份文件的名称,攻击者可能能够下载可能包含敏感信息的源代码,或者可能向攻击者提供关于利用什么的提示。

一个类似的问题是保留旧的 WordPress 安装。 当系统管理员重建他们的网站时,他们有时会将旧 WordPress 安装的副本留在/old/子目录中。 这些旧版 WordPress 安装通常仍可通过 Internet 访问,因此是攻击者利用旧版 WordPress 以及任何插件中的已知漏洞的多汁目标。

建议删除任何未使用的代码、WordPress 安装、WordPress 插件、WordPress 主题和任何其他旧的或未使用的文件(请记住,如果您需要恢复意外删除的内容,您可以随时使用备份)。 您的网站应该只包含您需要的文件。 任何其他额外或未使用的东西都应被视为额外的攻击面。

WordPress 用户和角色

验证是否使用了所有 WordPress 用户。 有没有新的可疑人物? 检查所有角色是否完好无损。 如果您遵循 WordPress 用户和角色指南,则您应该只有一个具有 WordPress 管理员角色的用户。

共享主机提供商

如果您的 WordPress 在共享托管服务提供商上运行,则黑客攻击的来源可能是另一个网站,而该网站恰好与您的服务器在同一台服务器上运行。 在这种情况下,最有可能的情况是攻击者设法提升了他们的权限。 然后,您可以访问整个服务器,进而访问您的 WordPress 网站。 如果您怀疑发生了此类攻击,最好的办法是在备份您的网站后立即与您的托管服务提供商联系。

.htaccess 文件

.htaccess文件(目录级 Apache HTTP Server 配置文件)也是黑客的常见目标。 它们通常用于将用户重定向到其他垃圾邮件、网络钓鱼或其他恶意网站。 检查服务器上的所有.htaccess文件,即使是那些未被 WordPress 使用的文件。 一些重定向可能很难被发现。

特别注意基于特定用户代理字符串重定向 HTTP 请求的配置——攻击者可能针对特定设备(例如移动用户),甚至通过配置您的网络服务器以对搜索引擎爬虫做出不同响应来参与黑帽 SEO。

如果可能,请考虑采用全局配置,而不是依赖 Apache HTTP Server 中的.htaccess文件。 .htaccess文件不仅会降低性能,而且如果攻击者能够读取,或者更糟糕的是,写入这些文件的内容,它们会使您的 WordPress 网站面临各种安全漏洞。 根据 Apache HTTP 服务器文档2 ,可以通过在主httpd.conf文件中将AllowOverride指令设置为 none 来完全禁用.htaccess文件。

检查其他入口点

Web 服务器上还有其他几个条目点。 确保检查所有这些,例如 FTP 服务器、SSH、Web 服务器等。

查找 WordPress 感染和恶意代码

开始之前: WordPress hack 通常涉及在 WordPress 主题、插件或核心文件中插入代码。 因此,要继续进行清理,您应该对修改代码感到满意。 如果不是,请雇用 WordPress 安全专家。

一旦您确定了黑客的切入点,通常就相对容易找到感染。 尽管以防万一您尚未发现感染,但您可以使用多种方法来发现感染。 这里有几个。

检查最近几天修改了哪些文件

理想情况下,您应该使用 WordPress 文件监控插件来监控整个 WordPress 安装中的文件是否有更改并立即提醒您。 如果您没有文件完整性监控 (FIM) 插件,则必须手动查找文件更改。

如果您可以通过 SSH 访问您的服务器,请检查您的 WordPress 网站中的哪些文件最近发生了更改。 通常,建议在发现黑客攻击后的最后五天内开始寻找更改,并根据需要扩大搜索范围。 为此,请导航到您的 WordPress 网站所在的目录并使用 find 命令。

find .mtime -5 –ls

上面的命令列出 (-ls) 在过去五天 (-5) 内已修改 (.mtime) 的所有文件。 如果列表太长,请使用 less 寻呼机更轻松地浏览和搜索列表。

find .mtime -5 –ls | less

如果您最近更新了插件或主题,任何相关的文件更改都会显示在您的搜索结果中。 日志、调试文件也经常更新,因此它们也会显示在您的结果中。 因此,您可能必须对结果进行一些广泛的过滤才能找到感兴趣的文件更改。 请注意,专门的插件(例如 WordPress 的 WordPress 文件更改监视器插件)专门设计用于自动为您清除此类误报。 该插件专为 WordPress 构建,可以识别来自 WordPress 核心、插件或主题更新、安装或卸载的文件更改。

检查所有 HTML 文件

在 WordPress 中,HTML 文件很少,黑客喜欢利用它们。 在您的网站中搜索所有 HTML 文件并分析其内容。 确保您网站上的所有 HTML 文件都是合法的,并且您知道它们的用途。

列出 WordPress 目录(和子目录)中所有 HTML 文件的简单方法是使用以下命令。

 
find . -type f -name '*.html' 

搜索感染文本

如果您的网站已被污损,或者由于感染而在您的网站上显示了一些文本,请使用 grep 工具进行查找。 例如,如果您看到文本“hacked by”,请导航到网站的根目录并发出以下命令。

grep –Ril "hacked by"

上面的命令将返回包含“hacked by”内容的文件列表。 获得受感染文件列表后,您可以分析代码并删除感染。

grep 开关是什么意思?

  • -R指示 grep 递归搜索(搜索整个目录结构,包括所有子目录和符号链接)。
  • -i向 grep 指示搜索应该不区分大小写(即忽略搜索词的大写)。 这在 Linux/Unix 环境中非常重要,因为与 Windows 不同,Linux 文件系统区分大小写。
  • -l向 grep 指示它应该返回文件名,而不是文件内容。 当您的 WordPress 网站被黑客入侵时,这是要寻找的其他恶意代码。

除了明显的“hacked by”字符串之外,以下是通常用于被黑 WordPress 网站的代码和文本短语列表。 您可以使用grep工具查找以下内容:

  • base64_decode
  • is_admin
  • 评估
  • gzuncompress
  • 通路
  • 执行
  • shell_exec
  • 断言
  • str_rot13
  • 系统
  • phpinfo
  • 修改
  • mkdir
  • 开放
  • 关闭
  • 读取文件

使用 grep 实现此目的的一种快速方法是通过以下 grep 命令递归查找文件(遵循任何符号链接),搜索与指定 PCRE 正则表达式匹配的字符串3 , 并返回文本匹配以及发生匹配的行号。

grep -RPn "(base64_decode|is_admin|eval|gzuncompress|passthru|exec|shell_exec|assert|str_rot13|system|phpinfo|chmod|mkdir|fopen|fclose|readfile) *\("

注意:其中一些代码也可用于合法代码,因此请在将某些内容标记为感染或黑客攻击之前正确分析代码并了解其使用方式。

将文件与原始 WordPress 安装进行比较

这是一种老式的方法,尽管它有点耗时,但它的效果很好。 将您网站的文件与未篡改网站的文件进行比较。 因此,如果您有网站的备份副本,请比较被篡改的网站。 如果没有,请在不同主机上安装 WordPress 和您在受感染网站上的插件的新副本并进行比较。

您可以使用多种工具来比较文件。 在这个例子中,我们使用了一个名为 Beyond Compare 的商业工具,尽管有几个免费的替代品。 下面是一些示例比较的屏幕截图。

在比较两个 WordPress 网站的根目录时,该工具会突出显示index.php文件、新的.htaccesswp-config.php文件内容的差异,以及子目录的差异。

比较两个 WordPress 网站的根目录

通过双击文件index.php我们可以看到有什么不同。

WordPress 网站中感染的 index.php

在 WordPress 文件比较中寻找什么?

查找不属于 WordPress 核心的文件。 大多数感染将文件添加到 WordPress 安装的根目录或wp-content目录。 如果黑客攻击是由易受攻击的插件引起的,则该插件的文件可能已被修改。

清理 WordPress 黑客

一旦您知道了 WordPress 黑客的来源并发现了感染,是时候按照以下程序开始清理了。

使用 WordPress 服务自动发现感染

如果上述情况似乎难以处理,请不要绝望。 您可以使用多种 WordPress 安全服务和插件来扫描您的网站以查找恶意软件和其他感染。 我们推荐 Malcare WordPress 安全服务。

但是请注意,此类插件的恶意软件签名列表有限。 因此,如果影响您的 WordPress 网站的攻击不常见,这些插件可能无法识别感染。 我们收到来自 WordPress 管理员的反馈并非闻所未闻,他们的 WordPress 网站成为 WordPress 恶意软件插件未发现任何错误的攻击的受害者。

这里的要点是,有效的安全控制涉及多层防御和检测。 虽然手动分析几乎总是最好的方法,但你可以做到; 这些插件也不应该被低估——它们仍然可以使用,并且在某些时候会派上用场。

从备份中恢复您的 WordPress

如果您有 WordPress 网站或博客的备份,请将其恢复。 它总是比手动清理代码容易得多。

更改所有密码,删除未使用的用户并验证 WordPress 用户角色

更改所有用户和服务的所有密码,包括 WordPress、CPanel、MySQL、FTP 和您自己的个人计算机。 检查您的 FTP、WordPress、MySQL 和任何其他服务上的用户列表,以确认所有用户都是合法的。 如果有不再使用的用户,请将其删除。 检查所有 WordPress 用户是否具有正确的角色和权限。

升级 WordPress 核心、插件、主题和其他软件

确保您运行的是运行 WordPress 网站所需的所有软件的最新版本。 这不仅限于 WordPress 本身,还扩展到任何插件、主题以及操作系统补丁、PHP、MySQL 和 Web 服务器(例如 Apache HTTP Server 或 Nginx)以及您可能正在运行的任何 FTP 服务器。

备份您的 WordPress 网站

WordPress网站备份

在此阶段,在删除实际受感染的代码之前,请备份您的 WordPress 网站。

删除 Google 安全浏览恶意软件警报

谷歌恶意软件警告

如果您的网站被 Google 安全浏览列入黑名单,您可以申请安全审查以删除警报。

一旦你删除了 WordPress 黑客...

WordPress 安全流程

恭喜,您从黑客中恢复了您的 WordPress 网站。 现在你必须确保它不会再次发生。 以下是一些关于你应该做什么的提示:

  1. 安装 WordPress 活动日志插件以跟踪 WordPress 网站上发生的一切。
  2. 如果您没有适当的备份解决方案,请获取一个。
  3. 使用 WordPress 安全扫描服务。
  4. 轮换数据库和管理员密码,并强制 WordPress 密码安全。
  5. 始终使您的 WordPress、WordPress 插件、主题和您使用的任何其他软件保持最新状态。
  6. 删除任何未使用的文件,例如旧的 WordPress 安装、未使用的 WordPress 插件和主题(包括未使用的默认 WordPress 主题)。 未使用的组件和软件会增加不必要的攻击面,最好将其删除。
  7. 遵循我们的 WordPress 安全强化指南,确保您处理好网站上所有可能的安全问题。

本文中使用的参考文献[ + ]

本文使用的参考资料
1 https://developer.wordpress.org/reference/functions/wp_maintenance/
2 http://httpd.apache.org/docs/current/howto/htaccess.html#when
3 https://regexr.com/5lpf0