Transcript
00:00:00WordPress 最近出现了一连串漏洞,其中最新的漏洞极为严重,
00:00:04甚至能让黑客完全控制后台管理面板。这包括 SQL 注入、执行
00:00:09Shell 命令等非常严重的隐患。也许你并不关心 WordPress,但它仍支撑着全球超过 44%
00:00:14的网站,这意味着你日常互动并提交数据的许多网站,
00:00:19都很有可能正在运行 WordPress 并且属于这个受漏洞影响的版本。它的运行机制大致是这样的:
00:00:25我在本地安装了一个标准的原生 WordPress,我可以运行这个
00:00:29检测脚本来查看漏洞是否存在。你可以看到我们收到了响应
00:00:34HTTP 207,这意味着它确实存在漏洞。这也代表我们现在可以运行第二个检查,
00:00:41即进入交互式 Shell。该脚本会对网站进行 SQL 注入,创建一个全新的管理员用户,
00:00:47然后上传一个恶意插件,使我能够与该网站上的任何文件进行交互。
00:00:52接下来让我们深入探讨这个问题,看看它具体是如何运作的。
00:00:58我现在看的这个代码库展示了如何对存在漏洞的 WordPress 网站进行 SQL 注入,也就是
00:01:06版本介于 6.90 至 6.94,或 7.00 至 7.01 之间的任何网站。整个攻击始于调用一个未身份验证的
00:01:14端点 batch v1,它允许你批量打包其他请求,而这些请求本身会进行验证和权限检查。
00:01:20批处理程序有两个并行数组,本应保持同步:validation 和 matches。
00:01:26但存在一个 Bug,当函数 wp pass URL files 因路径无效失败时,仅 validation 被更新,
00:01:33导致用来访问这两个数组的相同索引产生了不匹配的结果。概念验证(PoC)正是利用了这一点,
00:01:41它发送一个仅包含单个请求的批处理,即向 v2 post 端点发出的 POST 请求,而该请求本身携带有请求体。
00:01:48由于父请求被正确验证为 POST 请求,请求体中的任何请求最终都绕过了方法允许列表,
00:01:56从而允许你发送 GET 请求。在这个内部批处理中,有一个对不存在文章的 GET 请求,这触发了
00:02:02早先的异步脱节,导致 WordPress 在名为 get items 的函数下分发了同一个请求,其中字段 author
00:02:10exclude 映射到 author not in,有漏洞构建版本将其作为字符串插值拼接到 SQL 中。简单来说,因为所有这些操作在运行,
00:02:18SQL 没有被转义。PoC 使用了一系列请求,最终允许向 v2 users 发出 POST 请求以创建
00:02:25一个新的管理员账号。该代码库实际上详细介绍了所有这些步骤。前五步是未授权前的操作,利用了这个 Bug;但第六步只是已身份验证用户的正常 WordPress 行为,
00:02:35即上传一个恶意安装包。好了,正如先前提到的,这只是标准的原生 WordPress 版本,漏洞并不是通过某种恶意插件进入的,
00:02:46你安装标准版 WordPress 就会存在。我们先运行这个检查脚本,它基本上用来验证
00:02:52漏洞是否可以被利用。接着我们可以运行这个读取命令,例如它会告诉我们像
00:02:57数据库用户和数据库名称这类信息。我们现在还可以对网站运行 SQL 查询,从而获取诸如
00:03:03数据库实际正在运行哪个版本的信息。不过这些都还不是最糟糕的,真正可怕的是
00:03:07我们可以直接创建一个管理员账号,使其拥有上传恶意插件的权限。
00:03:15在本例中它被称为 web shell。这使我们能够访问网站的 Shell 终端,意味着我们现在拥有对
00:03:22该网站上任何文件的访问权限。这次攻击正是按照我们在视频前半部分解释的方式进行的。
00:03:27创建管理员后,插件被上传,最后该用户会被删除,因此
00:03:34插件的存在和所发生的一切变得更加隐蔽。为了展示这有多严重,我还创建了另一个独立的脚本,
00:03:38它会创建一个管理员账号并将其保留在系统中。
00:03:40看这里,我拿到了一个用户名和密码。回到网站,如果我访问 wp login 页面,我可以输入那个
00:03:47用户名和密码,点击登录,现在我就拥有了对管理后台的完整访问权限。如果这听起来有些复杂,别担心,
00:03:54我也花了很长时间才搞明白。据说,最终形成的这条利用链非常荒谬地
00:04:00复杂,单凭人类安全研究员可能需要数周甚至数月的时间才能发现并
00:04:05拼凑出来。没有任何人类研究员能在没有 AI 辅助的情况下,在 10 小时内
00:04:10找到并完成这条利用链。这相当令人担忧,因为坏人实际上可以利用 Bot 扫描
00:04:17代码库、检查 URL,静静等待漏洞出现,然后利用 AI 以破纪录的速度发起攻击。
00:04:23Reddit 上的一位用户表示,他们的网站在漏洞被发现仅仅两天后就被入侵了。
00:04:27由于他们只在周末升级,攻击者得以在系统处于漏洞状态期间创建一个新管理员并登录。
00:04:33该漏洞已在 7.0.2 版本中修复,大家可以升级到该版本,但这确实是个相当疯狂的漏洞。
00:04:40你可以在评论区找到我用来运行 PoC 的代码库和文章,另外,
00:04:46不妨订阅 Better Stack 来获取最新的科技资讯。希望大家喜欢这个视频,
00:04:50当然,一如既往,我们下期再见!