darksn0w · 2014/11/06 11:18

0x00 背景


前几天Blackhat上,有一个有意思的议题,《Reflected File Download,A New Web Attack Vector》,瞬间觉得高大上,就拿来膜拜了一下,经过膜拜发现不知道是我不能完全理解还是什么原因,总是觉得这种攻击方式略微鸡肋.我简单的把膜拜的过程记录下发出来,让各路基友帮忙看看,到底该用什么姿势去膜拜才是正确的.

Reflected-File-Download-Attack,我觉得可以翻译成"反射型文件下载",感觉跟反射型Xss类似,在Hafif的PPT里是这样描述的: “用户点击一个来自google.com的链接,会下载一个恶意的文件,一旦用户点了这个文件,这个文件就立即运行,windows的计算器就弹出来了(PPT第17页)”“Uploadless Downloads!(P18)”

由于那个漏洞google.com修复了,这里我找了一个百度的有类似风险的链接,来膜(实)拜(验)。

0x01 细节


首先看实验,然后在详细说原理: 如果你的浏览器是chrome,那么使用这个链接:

http://suggestion.baidu.com/su;/1.bat;?wd=&cb=calc||&sid=1440_2031_1945_1788&t=1362056239875
复制代码

如果你的浏览器不是chrome,那么使用这个链接:

http://suggestion.baidu.com/su;/1.bat?wd=&cb=calc||&sid=1440_2031_1945_1788&t=1362056239875
复制代码

当你点击了这个链接,你的浏览器会提示下载:

细心的童鞋在url中就已经发现了,内容都写在url里了,很显然如果你运行了,就会弹出计算器:

当然,肯定会有童鞋说,你以为我是SB吗,我才不会去点他呢。。(遇到这问题我竟无言以对,确实鸡肋)

这个议题的演讲人在PPT里面有一段大概这样意思的描述:我们是如何去相信我们的下载呢?(P20)

我觉得这个漏洞的最大价值也就在于普通用户去分辨是否恶意下载是靠各种浏览器地址框的绿色证书标识,是靠HOST,注意这里说的是普!通!用!户!

在这个例子里,如果我们不对url进行任何修改,打开后会下载会一个文件,名字是su:

http://suggestion.baidu.com/su?wd=&cb=window.bdsug.sugPreRequest&sid=1466&t=1362316450913
复制代码

从图中我们可以看出两个对我们有用的地方:

1.红框处,下载的文件名字跟url后面跟的su一样,这里我们可以试试能不能通过修改这里使下载的文件名变成我们想要的。 2.绿框处,cb字段输入的内容在返回中出现了,这里我们可以试试能不能通过修改这里使文件的内容变成我们所需的。

通过实验,得到下面这个能够执行命令的url:

http://suggestion.baidu.com/su;/1.bat;?wd=&cb=calc||&sid=1440_2031_1945_1788&t=1362056239875
复制代码

这里我们打开这个.bat:

这段字符串用被管道符隔成了两段命令,第一段是弹计算器,第二段是无效命令。 这个例子没有Hafif的PPT里的那个例子好,如果在我们能控制的输入位前面还有一些字符串,我们仍然可以使用管道符分隔开两段字符串。例如:

{"results":["q", "rfd\"|| calc|| ","I loverfd"]}
复制代码

我们再来看一下数据包,如果我们想要下载一个文件,遵循正常http协议,那么他的http头中要包含 Content-Disposition字段,并且参数为attachment,这个字段还有个字段是filename,也就是说如果想要使用下载功能这个字段的标准写法是这样的:

Content-Disposition:attachment;filename:1.txt
复制代码

但是google产生漏洞的这个位置并没有加filename参数。按理来说百度这个地方的安全风险也应该是这样产生的,但是在实际测试中我们发现,并不是这样的。 先看一下百度的返回包:

虽然没有那个强制下载的字段Content-Disposition,但是我们仍然成功下载了,这里就产生了一个问题。。。

在后面的测试中我们发现,是因为content-type字段的内容造成的,按照http协议,content-type的json返回包的正常写法是这样的:

Content-Type: application/json;
复制代码

为了验证是哪里的问题,我们继续尝试:

http://weibo.com/aj/top/topnavthird?_t=1&_v=WBWidget.cssVersionCallback
复制代码

这个微博地址返回的是json的数据,并没有下载行为,他的返回包是这样的:

现在我把修改返回里的content-type字段为baiduApp/jason:

发现页面文件发生了下载行为!

经过接下来的尝试我们发现,如果content-type不符合http协议,也就是说不是标准的application/json写法,而是baiduAPP/json或者xxxx/json,甚至Fuck/json,都会使页面产生下载行为!

(我也不能完全确定是不是不符合HTTP协议,各路基友求证实)

这样这个漏洞形成的原因就很简明了,要符合几个条件:

1.在返回中能看到我们的输入并且content-type的类型不是普通类型,json或者jsonp等等。。。

2.url没有过滤或转义‘/’‘;’

3.是下载类型。使用不完整的Content-Disposition:attachment或者是不符合http协议的content-type。

原理上基本就这样了,至于利用上这的确是有一定的鸡肋,不过类似反射型XSS,如果在社交网络中使用,效果还是很不错的,例子我就不举了,这里贴个Hafif在PPT中的例子。效果好坏完全看你的忽悠能力了!!

PPT里面还有关于如何修复,这里我就不说了,感兴趣的童鞋可以去看看,附上PPT下载地址:dakrsn0w.sectree.cn/RFD.pdf

Reflected File Download Attack相关推荐

  1. file DOWNLOAD HASH mismatch(编译安装opencv 3.2.0时报错)

    ubuntu 16.04 opencv 3.2.0 opencv_contrib 3.2.0 cmake时报错: -- Check contents of boostdesc_bgm.i ... -- ...

  2. 计算机音乐情深深雨蒙蒙,情深深雨蒙蒙 MIDI File Download :: MidiShow

    Introduction "情深深雨蒙蒙" is a MIDI music piece in Pop Music style, played by an ensemble of 3 ...

  3. 计算机键盘音乐好汉歌,好汉歌 MIDI File Download :: MidiShow

    Introduction "好汉歌" is a MIDI music piece in Pop Music style, played by an ensemble of 22 i ...

  4. 计算机音乐深海少女,深海少女 MIDI File Download :: MidiShow

    Introduction 初音未来的深海少女的主旋律部分 "深海少女" is a MIDI music piece in Pop Music style, played by Cl ...

  5. Struts2学习笔记(十七) 文件下载(File Download)

    前面我们刚刚学完文件上传,那么我们就接着来看和文件上传相对应的文件下载吧.对于文件上传而言,文件下载实现起来要简单的多.通常我们可以直接将一个超链接的地址指向我们想要给用户下载的资源即可.但是如果这些 ...

  6. 刀马旦计算机音乐,刀马旦 MIDI File Download :: MidiShow

    Introduction 原唱:李玟.周杰伦,填词: 方文山,谱曲: 周杰伦 ,编曲: 周杰伦,曲谱来自于网络 可用于VOCALOID.UTAU.袅袅虚拟歌手等虚拟歌手软件的调教(单轨) 注:1=B, ...

  7. 计算机音乐锦鲤抄,锦鲤抄 MIDI File Download :: MidiShow

    Introduction 锦鲤抄midi "锦鲤抄" is a MIDI music piece in Classical Music style, played by Acous ...

  8. 计算机音乐凉凉6,凉凉(伴奏) MIDI File Download :: MidiShow

    Introduction <凉凉>伴奏,RS700.400.500双排键可用,作曲:谭旋,电子管风琴改编:刘丹丹 "凉凉(伴奏)" is a MIDI music pi ...

  9. 虫儿飞计算机音乐,虫儿飞 MIDI File Download :: MidiShow

    Introduction 虫儿飞 主旋律 用于v3调教 "虫儿飞" is a MIDI music piece in Children's Music style, played ...

最新文章

  1. Qt学习一门:直接使用QT具
  2. JSP学习笔记(一):JSP语法和指令
  3. 人工智能:第二章 知识表示方法
  4. kaggle竞赛--房价预测详细解读
  5. GIT的Push和Pull,强制Pull覆盖本地命令
  6. 设置zookeeper开机自启动
  7. 后通用芯片时代: 专用芯片兴起背后的经济学
  8. C++共享内存类封装
  9. 注册表知识与技巧大全
  10. 商品详情页html源代码,商品详情页.html
  11. word2vec和bert的基本使用方法
  12. 已知三角形三边求面积
  13. 如何刷新本地 DNS 缓存
  14. 2021高博会扩大举办,助力高尔夫运动新发展
  15. thinkpad笔记本 刷bios失败,被救回方法
  16. postgresql: pg_ctl -D data start 出现 postgres aaaaaaaaaaaaaaaaaaaaaaaaa C:/Users/huang zhen yang/dat
  17. Kelvin Test
  18. 一起来看流星雨-------张翰
  19. 弘辽科技:千人千面到底是什么呢?
  20. mysql8.0如何授权_MySQL8.0 创建用户及授权

热门文章

  1. hp服务器显示器不亮,惠普电脑显示器不亮怎么办
  2. Python 实现黑白棋
  3. 生存之道,每个人都值得尊敬
  4. docker desktop 点击setting 一直转圈圈
  5. 给VBA窗体增加最大化、最小化窗体按钮
  6. Excel如何间隔插入空白列
  7. C语言----- 4/π=1-1/3+1/5-1/7+...,编程计算π的近似值,直到最后一项的值小于10-4次方为止 //输出π的值,并统计累加的项数
  8. win11关闭开盖开机 / Windows11关闭掀盖自动开机
  9. 3d生活馆迪万3d打印机产品
  10. 区块链在金融领域的应用案例