文章目录[隐藏]
今天刷TG看到一个新(旧)闻:WordPress4.9.2(含)以前的网站含有DoS漏洞,可以用一台电脑轻松down掉网站。来源链接; CVE;PoC
DoS攻击
拒绝服务攻击(英语:denial-of-service attack,缩写:DoS attack、DoS)亦称洪水攻击,是一种网络攻击手法,其目的在于使目标电脑的网络或系统资源耗尽,使服务暂时中断或停止,导致其正常用户无法访问。
当黑客使用网络上两个或以上被攻陷的电脑作为“僵尸”向特定的目标发动“拒绝服务”式攻击时,称为分布式拒绝服务攻击(distributed denial-of-service attack,缩写:DDoS attack、DDoS)。据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分钟过后……网站依然坚挺。
怂.jpg
期间……网站一直正常运行。
两次攻击,一共用时40分钟,运行WordPress 4.9.4的网站没有停止响应。从Linode Longview上看,攻击期间的I/O以及CPU占用、内存占用都十分平稳。
总结
此次的漏洞具有利用价值,但是在最新版本的WordPress上面已经不起作用。如果站长看到了这篇文章,强烈建议更新到最新版本。
同时,虽然这次的攻击CloudFlare不能提供有效防护,为了避免未来的DoS和其他攻击方式,还是建议开启CDN进行源站IP的匿名化处理,还有针对其他普通DoS的防护。
慢慢浏览了你的主题,感觉站长的高中生活真是丰富。。。
回想我的高中,都在拍皮球中度过。
@yiran 我高中晚自习都让同桌去图书馆借小说给我看,作为交换我把作业给他抄…然后班主任去图书馆查了借书名单(
但是班主任也说不出话,我们在班上成绩都是靠前的
TG的哪一个channel?
@yiran @Google_Voice,看到之后通过CVE号查证以后尝试的复现。