DRDoS理论与实践(理论篇): 3. Joomla Googlemap插件反射式DDoS攻击

1.漏洞发布日期

(1) FREEBUF原文

image001

图1

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

(2) 启明星辰漏洞报告

image002

图2

原文链接: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

  实际的过程如图:

image003

图3

 

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

image004

图4

  说明: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中的流量:

表1

表1

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

  例如,在浏览器里请求连接:

  http://server.com/Joomla/plugins/system/plugin_googlemap3/plugin_googlemap3_proxy.php?url=target.com/large_file.xxx

  服务器端的http报文信息:

image005

图5

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

表2

表2

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

image006

图6

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

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

表3

表3

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

image007

图7

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

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

表4

表4

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

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

4.攻击效率

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

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

  攻击目标网络流量:

image008

图8

  Joomla反射服务器网络流量:

image009

图9

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

  攻击目标网络流量:

image010

图10

  Joomla反射服务器网络流量:

image011

图11

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

  攻击目标网络流量:

image012

图12

  Joomla反射服务器网络流量:

image013

图13

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

  攻击目标网络流量:

image014

图14

  Joomla反射服务器网络流量:

image015

图15

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

  攻击目标网络流量:

image016

图16

  Joomla反射服务器网络流量:

image017

图17

(6) 攻击效率小节

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

  注:具体实验方法与漏洞重现过程见实验篇(包括环境搭建,漏洞重现,工具使用等)。

5.攻击缺陷

(1) 大文件

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

(2) 服务器缓存

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

(3) 反射服务器数量

  FREEBUF原文中说到:

image018

图18

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

image019

图19

image020

图20

image021

图21

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

6.思路抽象与扩展

Open Redirect

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

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

image022

图22

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

Comments 3

发表评论

电子邮件地址不会被公开。 必填项已用*标注