如果感染了 WordPress 上的 SEO 垃圾邮件怎么办

已发表: 2021-05-17

在 Jetpack,处理不同类型的网络威胁和攻击是我们日常工作的一部分。 大多数情况下,它的范围从收集恶意文件和查找攻击媒介,到提供从最新备份恢复网站的帮助。 但有时我们会进入一个真正有创意的攻击的不同维度,一个莫名其妙的再感染维度——我们进入……暮光区。

好吧,我可能过于戏剧化了,但请耐心等待我为这个神秘故事设定场景。 准备好? 请和我一起踏上幽灵、垃圾邮件和搜索引擎领域的旅程。

恶意行为

我们发现一个网站受到了一种非常有趣的攻击。 它最初是作为谷歌搜索控制台发送的电子邮件出现的:一个不常见的 URL(而且看起来非常可疑,里面有一个可点击的 URL)被列为增长最快的页面。

显示垃圾邮件插入 URL 的图像
谷歌搜索引擎工具增长最快的页面

网站所有者有点不高兴,因为这样的行为通常是感染的结果,但 Jetpack 没有检测到或警告他们任何事情。 另外,当他们检查时,这些页面甚至不存在于网站上,但无论如何都被谷歌索引了。 暮光地带愈演愈烈

当我们检查 Jetpack Scan 可能遗漏的任何可疑文件时(没有安全工具检测到 100% 的威胁),事情变得更加奇怪。 WordPress 核心和插件完好无损:数据库上没有注入文件或脚本。 一些过时的插件没有任何安全修复,WordPress 落后一个版本(5.6),最新的更新没有列出任何重大的安全修复。 根本没有任何可疑之处。 没有通常的嫌疑人,没有袭击的证据; 还没有,反正。

下一个合乎逻辑的步骤是检查访问日志。 也许它可以揭示这个谜团。 我们是否会发现我们正面临零日攻击,或者我们终于找到了多元宇宙理论的证明,而这个网站只在 Universe #1337 中受到感染? 到日志!

垃圾邮件请求的代码
对这个奇怪的垃圾邮件的请求
另一个奇怪的垃圾邮件请求。为什么必应喜欢它?
似乎 Bing 也喜欢它……但为什么呢?

如您所料:没有什么奇怪的,除了对这些垃圾邮件页面的一堆请求,正如您在屏幕截图中看到的那样。 他们都返回了“200 OK”。 所以,页面存在于时间和空间连续体中的某个地方,或者……等一下……你现在看到了吗?

所有这些页面都指向同一个位置:`/?s=`,这意味着搜索引擎(Google 注意到了这个问题,但请求来自 Bing)正在索引搜索结果页面。 那为什么呢? 据我们所知,爬虫不会在页面上执行搜索,对吧?

索引悖论

如果您从事网站业务,搜索引擎如何工作的基础知识相当简单。 有一个机器人(或自动化脚本)可以抓取网页、索引其内容、执行一些魔法并将可查询的资源存储在云中的某个位置。

考虑到这一点,我们对日志进行了更多挖掘,以查看这些请求中是否有任何其他线索,例如引荐来源网址,但完全没有运气。 所有记录的请求都来自搜索引擎。 幸运的是,谷歌搜索控制台在其中一个日志中有一个引用页面。

谷歌搜索控制台审查页面
Google 的 Search Console 工具为我们提供了一些提示。

现在我认为是时候将我们的 Twilight Zone 帽子换成 CSI 帽子并挖掘一些网站骨头放在显微镜下。

对于受过训练的人来说,很容易看出引用页面 URL 属于受感染的网站; 幸运的是,我们有训练有素的眼睛! `index.php` 目录毫无意义,可能是为了混淆网站所有者而添加的。 接下来是另一个随机目录和一个随机名称的 PHP 文件,这可能是一个正在获取最终有效负载的加载程序:`cargese4/cca442201.htm`,这也是随机的。 所有这些都是链接农场恶意软件感染的特征。

在 Google 上快速搜索以查看引用站点的索引内容,确认它确实被感染并在一段时间内提供 SEO 垃圾邮件。 该网站是为印度的一家食品公司提供的,但在日本提供 SUV 交易——是的,那是垃圾邮件。

垃圾邮件攻击的日语搜索结果
在印度网站上搜索带有日语垃圾邮件的查询。

但是,没有一个结果链接到我们朋友的网站,所以我决定找出其他网站是否受到同样奇怪行为的影响。

为了寻找更多这种垃圾邮件攻击的受害者,仅出于教育目的,我们使用我们的 Google-fu 知识制作了一个搜索查询,该查询将返回以 .edu 结尾的网站,其 URL 中有`/?s=`,以及标题中的“购买”一词。 我们得到了 22 个结果。 这对我们的狩猎来说已经足够了。

垃圾邮件的搜索结果
使用 .edu 和 .gov 网站检查垃圾邮件感染过滤掉仅为链接农场创建的域(如 .com)。

这证明报告的站点不是唯一受影响的站点; 这似乎是一个更普遍的问题。 我们思考了是什么让 Google 将这些页面编入索引。 Googlebot 是如何接触到他们的? 下一步:反向链接检查器。

反向链接检查的结果
反向链接检查的结果

有几种在线工具可以提供网站反向链接的报告; 我们在这项研究中使用的是 Ahrefs,但其他工具可能会达到相同的结果。 结果中列出了一些恶意搜索页面,确认我们走在正确的道路上。

选择其中一个网站来检查发生了什么,我们看到了近 5,000 条垃圾邮件评论,正如您在下一个屏幕截图中看到的那样(他们应该查看 Jetpack Anti-spam)。 每条评论都链接到查询中包含垃圾邮件的网站搜索页面。

链接到垃圾邮件结果的评论部分
链接到垃圾邮件的评论

捉住白兔

正如我之前提到的,搜索引擎机器人不会在网站页面上执行查询。 但是,如果它找到指向它的链接,它将被跟踪。 如果页面没有告诉自动化脚本某个特定页面不可索引,它会添加它。

注入垃圾邮件示例
Ye olde 注入垃圾邮件

这是一种在网站上“注入”垃圾邮件的巧妙方法,用于向搜索引擎结果发送垃圾邮件并通过省力的链接耕作来提高网站页面排名。

既然我们理解了这个问题,我们如何告诉搜索引擎机器人避免跟随指向搜索页面的链接(或者只是拒绝将它们编入索引)? 最好的方法是对 WordPress Core 进行更改,这将有助于保护整个社区(如果您想报告错误或想贡献代码,请加入我们)。

为了避免一些不必要的返工,我们检查了 WordPress Core trac,发现这个问题在 5.7 版上已解决,但遗憾的是没有将其作为安全问题出现在更新日志中。

我将引用作者,他比我更好地描述了这个问题(感谢 abagtcs 的报告):

网络垃圾邮件发送者已经开始滥用这些网站的搜索功能,通过传递垃圾邮件术语和主机名,希望提高垃圾邮件发送者网站的搜索排名。

垃圾邮件发送者将这些链接放置在开放的 wiki、博客评论、论坛和其他链接场中,依靠搜索引擎抓取他们的链接,然后访问并索引带有垃圾内容的搜索结果页面。

这种攻击出人意料地相当广泛,影响了世界各地的许多网站。 尽管某些由自定义编写代码提供支持的 CMS 和网站可能容易受到这种技术的攻击,但根据初步调查,似乎——至少在 .edu 领域——迄今为止最具针对性的网络平台是 WordPress。”

当网络上超过 41% 的最大网站是 WordPress 网站时,这并不奇怪。

结案

从这次事件中可以吸取一些很好的教训:

  1. 热门增长页面上显示的 URL 没有得到很好的清理,因此您看到的被表情符号分隔的垃圾邮件 URL 实际上是可直接点击的(嗨,Google 朋友,那是你的); 不知情的用户可以点击它们并访问不需要的内容。
  2. Google 需要进行一些调整,以避免将明显的垃圾页面编入索引。 根据工具报告,一些清晰的页面被抓取并没有被索引,同时添加了垃圾邮件。
  3. 攻击者甚至会利用您系统上最小的漏洞,我们必须时刻保持警惕。
  4. 始终倾听人们的意见并了解他们的问题。 如果我们只从我们自己的工具中检查日志,我们将不会意识到这个问题,也无法帮助修复他们的网站。
  5. 使您的软件保持最新。 总是。

在 Jetpack,我们努力确保您的网站免受此类漏洞的影响。 要领先任何新威胁一步,请查看 Jetpack Scan,其中包括安全扫描和自动恶意软件删除。

Erin Casali 致敬,感谢他强调了这个问题并帮助调查。