隐藏的 WordPress 后门:如何在它们找上门之前先找到它们

WordPress 后门被设计成长期隐藏,往往潜伏数月。本文介绍攻击者如何植入后门,…

Streams of code representing hidden WordPress backdoors

后门是攻击者留下的一段代码,让他们日后能够再次进入,即使最初的入侵点已经被关闭。第一次入侵是门,而后门则是第二把钥匙,藏在你网站的某个角落,伺机被使用。WordPress 后门是取证审计中最常见的痕迹之一,而大多数网站所有者从未把它们当作一类问题来看待。

本文将讲解后门是如何被植入的、它们通常藏在哪里,以及如何在你自己的网站上找到它们。

攻击者为什么要植入后门

首次入侵一个 WordPress 网站需要花费功夫:找到有漏洞的插件、加以利用、在网站中穿行。一旦进入,攻击者就想确保自己能再次回来,而不必重新做这一切。后门就是针对原始漏洞被修补的一种保险。

正因如此,入侵之后仅仅修补入口点是不够的。攻击者很可能仍在服务器上。在你找到并清除后门之前,每一次清理都只是暂时的。

WordPress 后门的经典形式

最常见的后门可归纳为少数几种可辨认的模式。

  • 混淆的 PHP。 一小段代码,往往只有几行,使用 eval 配合 base64_decode、gzinflate 或 str_rot13 来执行作为参数传入的载荷。乍看之下代码像是乱码,而这正是它的目的。常见变体包括 eval、带有用户可控输入的 assert、使用已被移除的 e 修饰符的 preg_replace,以及用来自 $_GET、$_POST、$_REQUEST、$_COOKIE 或 $_SERVER 的输入直接调用 shell_exec 或 system。
  • Web shell。 一个专门的 PHP 文件,为攻击者提供基于网页的文件管理器或命令执行器。c99shell、r57shell、WSO 和 FilesMan 等名称臭名昭著。Web shell 就是装在你服务器上、并非你所放置的一个微型管理面板。
  • 伪造的管理员账户。 在最初入侵期间创建的、拥有管理员角色的新用户,用户名往往看起来略有异样,或邮箱使用你不认识的域名。攻击者随时都能用该账户登录卷土重来。
  • 基于 cron 的再感染。 一项计划中的 WordPress 任务,会在恶意文件被删除后重新生成它们。即使你清理了恶意文件,cron 也会在下次运行时悄悄把它们放回去。
  • 被修改的核心、主题或插件文件。 攻击者编辑一个合法文件,在其中加入一小段恶意代码。该文件仍按预期工作,但在被触发时也会执行攻击者的载荷。

它们藏在哪里

后门偏爱 WordPress 安装中最不起眼的角落。有几个常见的藏身之处值得了解。

  • wp-content/uploads 目录树。 上传目录本应存放媒体文件。出现在其中的 PHP 文件几乎总是可疑的。最近对一家悉尼代理机构网站的审计专门清查了这个目录,只发现了少数几个无关紧要的 WordPress 加固存根。除此之外的任何内容都应加以调查。
  • 名称酷似核心文件的文件。 wp-loadx.php、wp-shell.php、wp-cron-extra.php、wp-log.php。一个与真实 WordPress 文件几乎相同的名称,是刻意的伪装选择。
  • 内嵌 PHP 的图像文件。 扩展名为 .jpg 或 .png、但文件开头实际含有 PHP 代码的文件。如果服务器上的某处随后把该文件当作 PHP 引入,载荷就会执行。少见,但确实存在。
  • 合法插件或主题文件内部。 攻击者在现有文件的开头或结尾添加一小段代码。文件依旧工作,但同时也运行了后门。
  • wp-config.php 及其变体。 有时通过 auto_prepend_file 指令,在每次请求之前引入恶意载荷;有时则直接注入一个常量或一条 include 语句。

如何扫描后门

你无需是安全专家也能做有用的检查。像 Wordfence 这样可靠的安全插件会进行深度扫描,并报告与其特征库的任何匹配。免费版就能很好地完成这项工作;付费版更新特征更快,并增加了漏洞监控。

除了插件,你还可以手动排查。查看 wp-admin、wp-includes 以及插件和主题文件夹之外的每一个 .php 文件。留意最近的修改时间,找出过去几周内被改动却无法解释的文件。在代码中搜索前面提到的可疑模式。任何匹配的内容都值得进一步查看。

将 WordPress 核心文件与官方版本进行比对。多种工具可以做到这一点,包括 Wordfence 和官方的 wp cli 工具。核心文件中的任何差异都是危险信号。

找到后门后的清理工作

找到一个后门很少意味着只有一个。攻击者往往会在不同位置、以不同形式植入多个后门,使得找到其中一个并不能把他们挡在门外。在确认一个后门后,请扩大搜索范围。检查所有类似的位置,查找相似的模式,并查看在同一时间段内被修改过的每一个文件。

轮换所有凭据:salt 和密钥、WordPress 密码、数据库密码、API 密钥、SFTP 密钥。重置所有会话。重新审查用户。重新审查插件。如果你能确定入侵发生的日期,就恢复到入侵之前的干净备份。

从一开始就预防后门

后门是入侵的第二层。预防主要在于阻止第一层。保持核心、主题和插件更新。移除你不需要的文件管理器和 shell 访问插件。限制管理员访问。使用 2FA。运行一个会监控意外位置出现新文件的安全插件。

如果你能持之以恒地做到这些,后门被植入你网站的概率就会大幅下降。一旦网站防护到位,攻击者就会转向更容易得手的目标。

需要帮助吗?

如果你怀疑自己的 WordPress 网站上可能存在后门,或者你刚刚完成清理、想要再有一双眼睛来核实,Defyn 可以进行一次取证扫描,明确告诉你我们的发现。请与我们联系,无论结果如何,我们都会给你一个清楚的答复。

Claire Smith 的头像
Sponsored Loved this story? Defyn turns articles like this into the websites your competitors wish they had. Talk to us → defyn.com.au