关于WordPress漏洞CVE-2018-6389在4.9.4的试验报告

今天刷TG看到一个新(旧)闻:WordPress4.9.2(含)以前的网站含有DoS漏洞,可以用一台电脑轻松down掉网站。来源链接CVEPoC

DoS攻击

拒绝服务攻击英语:denial-of-service attack缩写DoS attackDoS)亦称洪水攻击,是一种网络攻击手法,其目的在于使目标电脑的网络系统资源耗尽,使服务暂时中断或停止,导致其正常用户无法访问。

黑客使用网络上两个或以上被攻陷的电脑作为“僵尸”向特定的目标发动“拒绝服务”式攻击时,称为分布式拒绝服务攻击distributed denial-of-service attack缩写DDoS attackDDoS)。据2014年统计,被确认为大规模DDoS的攻击已达平均每小时28次。[1]DDoS发起者一般针对重要服务和知名网站进行攻击,如银行、信用卡支付网关、甚至根域名服务器等。

(以上内容来自维基百科)

要是维基上的描述太抽象了,我们举一个具体的例子:百度贴吧的签到功能。

签到的流程很简单,浏览器上点一下签到,过一会弹出一个悬浮窗,提示经验+5,目前等级*级,是第几名签到…(太久没玩了忘了具体都提示了啥)在这个过程中,浏览器给服务器发出的是“我要签到”这个简单请求,服务器则需要处理和返回:

  • 用户是第几天签到,签到天数+1;
  • 根据天数计算签到经验;
  • 将签到经验加到总用户经验中,求和;
  • 重新计算用户等级;
  • 计算用户是第几名签到
  • ……

这就是简单的发出数据和返回数据的严重不对等。所以知道为什么有一段时间百度移除了贴吧签到功能了吧。

WordPress中的漏洞分析

来源链接里面(的英文)已经解释的很清楚了,WordPress当中存在一个load-scripts.php,这个文件中存在着以下语句:

其中,$wp_scripts是调用WordPress内建JS模块的方式。这些模块被统一存放在/wp-includes/script-loader.php里面。打开这个文件给你们看一下是有多么壮观:

总共有180个(显示181的其中一个是注释中的,写明了调用方式)模块。这个模块名单是如此之长以至于我都不想再放上来增加文章长度……

那么,如果构造一个请求,让服务器加载所有模块的话……

服务器:

不好意思拿错表情包了,是这个。

服务器:

理论上是可行的,对吧!(突然兴奋.jpg)

所以这个攻击异常的暴力+没有技术含量,就能用2.6KB的请求炸出服务器4MB的回复(某个老哥的测试结果)…

(来源:http://baraktawily.blogspot.com/2018/02/how-to-dos-29-of-world-wide-websites.html

使用PoC进行攻击演示

因为攻击其他人的站点是违法的,所以我用了自己站点(WordPress 4.9.4)做实验.

搞到PoC的python脚本之后,我在自己笔记本上用PyCharm跑了一遍(请求数100000),尝试着把自己的网站down掉:

 

根据PoC的描述,在发送了大约500个请求之后(开着CloudFlare),服务器就down了。

但是在运行了10分钟过后……网站依然坚挺。

15分钟过后:

怂.jpg

期间……网站一直正常运行。

(第二次攻击测试)

两次攻击,一共用时40分钟,运行WordPress 4.9.4的网站没有停止响应。从Linode Longview上看,攻击期间的I/O以及CPU占用、内存占用都十分平稳。

总结

此次的漏洞具有利用价值,但是在最新版本的WordPress上面已经不起作用。如果站长看到了这篇文章,强烈建议更新到最新版本

同时,虽然这次的攻击CloudFlare不能提供有效防护,为了避免未来的DoS和其他攻击方式,还是建议开启CDN进行源站IP的匿名化处理,还有针对其他普通DoS的防护。

4 条评论

有什么想法说出来听听?

This site uses Akismet to reduce spam. Learn how your comment data is processed.

  • 慢慢浏览了你的主题,感觉站长的高中生活真是丰富。。。
    回想我的高中,都在拍皮球中度过。

    • 我高中晚自习都让同桌去图书馆借小说给我看,作为交换我把作业给他抄…然后班主任去图书馆查了借书名单(

      但是班主任也说不出话,我们在班上成绩都是靠前的