CVE-2018-6389 未修复的 DoS 漏洞可让任何人拿下 WordPress 站点

嘶吼RoarTalk 02-07

简介

WordPress CMS 平台上发现一个简单但很严重的应用级 DoS 漏洞,攻击者利用该漏洞可以用很小的带宽来达到网络级 DDoS 攻击的效果,达到拿下 WordPress 站点的目的。

漏洞编号 CVE-2018-6389,影响过去 9 年发布的所有 WordPress 版本,包括最新的 WordPress 稳定版 Version 4.9.2。但厂商拒绝修复该漏洞。

以色列的安全研究人员 Barak Tawily 发现该漏洞位于 load-scripts.php 文件处,load-scripts.php 是 WordPress CMS 的内置脚本,用来处理用户定义的请求。

对于那些不了解的开发者,load-scripts.php 文件是 admin 用户来改善网站性能和加快加载速度的,使用的方法是把多个 JS 文件融入到一个单独请求中。

为了让 load-scripts.php 在 admin 登录前就工作在管理登录页面 ( wp-login.php ) ,WordPress 作者并没有保持任何的认证,这就导致了该页面可以被任何人访问。

Wordpress DoS 攻击

依靠已安装的插件和模块,load-scripts.php 文件可以通过传递 name 到 load 参数来选择性的调用必须的 JS 文件,这些 name 是以 "," 隔开的,就像下面的链接:

https://your-wordpress-site.com/wp-admin/load-scripts.php?c=1&load=editor,common,user-profile,media-widgets,media-gallery

当网站加载时,load-scripts.php 会根据 URL 中的每个 name 去寻找对应的 JS 文件,并把其中的内容添加到一个单独的文件,然后发送回用户的 web 浏览器。

WordPress DoS 攻击原理

研究人员说,攻击者可以通过把所有的参数传递给上面的 URL 来让 load-scripts.php 来调用所有可能的 JS 文件,通过消耗更多的 CPU 和服务器内存来让目标网站运行变慢。

用户可以用预先定义好的列表 ( $wp_scripts ) 来发送请求,而这是 load [ ] 参数的一部分。如果请求的值存在,服务器会用从用户那里获取的补充值相关的预定义的路径来执行 I/O 读操作。

虽然访客不能用一个简单的请求来拿下整个网站,但是眼睛人员用一个 Python POC 脚本(doser.py)来向相同的 URL 发起大量的并发请求,这会大量消耗目标服务器的 CPU 资源并让服务器宕机。

Hacker News 验证了 DOS 漏洞利用的真实性,成功地拿下了中等 VPS 服务器上运行的 demo WordPress 站点。这再次证明了 load-scripts.php 不需要任何的认证,匿名用户也可以进行上述操作。当服务器的请求达到 500 左右的时候,服务器就不再响应了,返回 502/503/504 错误。但是来自一个机器的 40Mbps 的连接是不足以让运行在处理能力和内存比较高配的服务器上的 demo WordPress 站点宕机的。

有更大带宽和僵尸主机的攻击者可以利用该漏洞来攻击更大、更主流的 WordPress 站点。

补丁?

截止目前,还没有补丁发布。该漏洞大概影响 29% 的 web 站点,将上百万的网站至于黑客的面前,同时会让合法的用户得不到正常的服务。对于那些不能提供预防应用层攻击的 DDOS 保护的网站,研究人员做了一个 WordPress 站点的副本,可以预防此类漏洞。

研究人员建议用户不要安装此类修改过的 CMS,即使这种 CMS 的来源是可信的。研究人员也发布了 bash 脚本来修复该漏洞。

if [ [ -f wp-login.php &&-f wp-admin/load-scripts.php &&-f wp-admin/includes/noop.php ] ] then sed -i "1 s/^.*$/

相关标签: php dos

嘶吼RoarTalk
原网页已经由 ZAKER 转码排版 查看原文
最新评论
分享 返回顶部