解析Joomla GoogleMap插件“反射”式DDoS攻击

1.漏洞发布日期

(1) FREEBUF原文

14286678816644

原文链接:http://www.freebuf.com/news/59587.html

(2) 启明星辰漏洞报告

14286679031149

原文链接:http://www.venustech.com.cn/NewsInfo/124/21883.Html

可见,FREEBUF原文和启明星辰漏洞报告中的漏洞发布时间并不一致。但总而言之,该漏洞并不是新出现的漏洞,利用该漏洞进行的攻击也是在很久前就存在的。

2.漏洞成因

(1) Joomla Googlemap插件漏洞

该插件允许服务器作为代理,去请求第三方(攻击目标)的页面内容。这种攻击中“反射”的概念与以往不同,以往的“反射”是指针对于UDP协议,通过修改源IP地址的方法来反射,因此需要很高的系统权限。而利用Joomla Googlemap插件漏洞进行的“反射”式DDoS攻击并不需要修改源IP地址,也不需要特殊的系统权限,攻击者只需请求一个URL即可完成攻击。

(2) “反射”的过程

存在漏洞的Joomla服务器作为反射服务器,攻击者向Joomla服务器发送请求,之后Joomla服务器请求攻击目标的页面内容。攻击的一次请求过程如下:

例如,在浏览器里请求连接: http://server.com/Joomla/plugins/system/plugin_googlemap3/plugin_googlemap3_proxy.php?url=target.com

实际的过程如图:

14286679216795

反射服务器端的http报文信息:

14286679386286

说明:192.168.222.1为攻击者IP地址,192.168.222.128为Joomla服务器IP地址,192.168.222.130为攻击目标IP地址。

(3) 版本

Joomla Googlemap插件的版本有许多,然而并不是所有的版本都具有这个漏洞。目前(2015年3月)该插件的最新版本为v3.2版,存在漏洞的插件版本为:v3.2/v3.0/v2.18及之前所有版本,在v3.1/v2.20/v2.19的版本中,代理的功能被移除,因此不具有该漏洞。

3. 攻击实现

分别从三方总结图4中的流量:

14286687476320

由表1可知,直接请求攻击目标的根域名,无论是上行流量还是下行流量,攻击者和反射服务器所承受的代价都超过了攻击目标,这样是实现不了DoS的目的的。因此需要修改请求URL来请求攻击目标中的一个较大的文件:

例如,在浏览器里请求连接:http://server.com/Joomla/plugins/system/plugin_googlemap3/plugin_googlemap3_proxy.php?url=target.com/large_file.xxx

服务器端的http报文信息:

14286679547780

分别从三方总结图5中的流量:

14286688177627

表2中的数据看起来不但比表1没有优化,而且代价更加夸张。但是,这里需要注意的是,这只是在浏览器中的请求,而在实际的攻击中,最后一个http数据包完全不需要,因此,真正的攻击看起来应该是这样的:

14286679748340

说明:192.168.222.129为攻击者IP,其他不变

分别从三方总结图5中的流量:

14286688507200

可见,流量数据已经有了改进,但是这里还存在一个问题,反射服务器和攻击目标承受的流量几乎相同。在对攻击目标进行大流量攻击的同时,反射服务器可能会率先挂掉。这时,“DDoS”中的第一个“D”便发挥了用处。分布式攻击能够很好的将流量分散,也即所有的分布式反射服务器的流量加起来才与攻击目标承受的流量相同。例如,使用2个具有漏洞的Joomla 服务器进行攻击:

14286679885550

说明:192.168.222.128为反射服务器1,192.168.222.131为反射服务器2,其他不变

分别从三方总结图5中的流量:

14286688769385

可见攻击目标承受的流量几乎跟所有反射服务器加起来一样,所以只要有大量的反射服务器,便可以针对攻击目标发动很大流量的攻击。

更确切的说,这是一种耗尽攻击目标机器性能和上行带宽的DDoS攻击。

4.攻击效率

本文统计了分别请求攻击目标中不同大小的文件的攻击效率,这里用了一台Joomla反射服务器(windows),一台攻击目标(Linux),一台攻击机(Kali Linux)。下面是统计信息:

(1) 请求500KB的txt文件,每秒请求19次

攻击目标网络流量:

14286680023578

Joomla反射服务器网络流量:

14286680232489

(2) 请求1MB的txt文件,每秒请求18次

攻击目标网络流量:

14286680413102

Joomla反射服务器网络流量:

1428668052985

(3) 请求1.5MB的txt文件,每秒请求19次

攻击目标网络流量:

14286680816614

Joomla反射服务器网络流量:

1428668095635

(4) 请求2MB的txt文件,每秒请求18次

攻击目标网络流量:

14286681115292

Joomla反射服务器网络流量:

14286681248274

(5) 请求2.5MB的txt文件,每秒请求18次

攻击目标网络流量:

14286681379279

Joomla反射服务器网络流量:

14286681519256

(6) 攻击效率小节

可见,这种攻击的效率是很高的。仅用一台反射服务器,每秒请求19次,便能消耗攻击目标近50M/s的带宽。若进一步提高每秒请求的次数,以及请求更大的文件,或许仅需几百台这样的反射服务器便能产生超过百G的流量攻击。

注:具体实验方法与漏洞重现请参考ArkTeam官网及微信公众平台。

5.攻击缺陷

(1) 大文件

要想达到很好的攻击效率,要求在攻击目标中存在一个较大的文件,虽然文件格式不限,但是在寻找大文件时仍会比较困难,可能需要通过爬行或遍历目录来寻找。若攻击目标中不存在大文件,那么攻击效率就会大打折扣。

(2) 服务器缓存

由于该种攻击方式是耗尽攻击目标的上行带宽,同时反射服务器会下载相应的大文件,但若反射服务器采用了某种缓存技术,在第一次下载后便不再下载,这时攻击效率仍会大打折扣。

(3) 反射服务器数量

FREEBUF原文中说到:

14286681675451

这意味着,有15万台Joomla服务器存在这种漏洞,也就意味着所有Joomla服务器的数量应该远远大于15万。但是,根据调研,收集到的Joomla服务器(所有)的数量如下:

14286681808854 14286681957714 14286682089752

只有oshadan中识别到的Joomla服务器较多,若对oshadan提供的搜索结果进行爬取和插件验证,则能够得到一份反射服务器列表,可用于攻击。

6. 思路抽象与扩展

Open Redirect

这种攻击其实是Open Redirect的一种特例,也就是说,具有Open Redirect特性的服务器都能用作反射服务器。Open Redirect是指能够使得反射服务器向任意网址转发请求,这里的任意很重要。

举一个大家都很熟悉的例子:

142866822116

爱站就是其中之一。我们所查询的网站包含在了URL之中,而且,每查询一次,爱站就会向目标网站查询一次标题。因此若是能够收集到许多这样的网站,也能够用作反射服务器。

转载来自FreeBuf黑客与极客(FreeBuf.COM)

 

上一篇:WP Super Cache <=1.4.2 存储型XSS漏洞分析

下一篇:谷歌正为Gmail开发PGP端到端加密技术