博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
django图片上传到oss_从攻防角度看oss安全(二)
阅读量:5754 次
发布时间:2019-06-18

本文共 1050 字,大约阅读时间需要 3 分钟。

OSS简单可以理解为企业自身的文件存储服务器。问题出在站点的上传功能,存在任意文件上传,但因为上传到的是oss或文件存储服务器,所以不论是什么类型的脚本都是不解析的,访问会直接下载回来,那作为开发者会高枕无忧了吗?然并卵,我还可以上传一个内容存在xss payload的hack.html的文件,服务器便会静态文件进行解析;重点来了,可能企业在使用oss服务时,使用的域名是img-oss.yourcompanydomain.com,而在你公司的sso或产品为了跨域在开发时set-cookie:*.yourcompanydomain.com,那攻击者就可以拿着img-oss.yourcompanydomain.com/hack.html找对应的场景或发给公司的员工,打开后cookie可能就被“借”走了。

总结两点:

  1. 任意文件上传;

  2. 站点可以跨域

总结两点:

  1. 任意文件上传;

  2. 站点可以跨域

案例复现

案例一:

0x01:

set-cookie

872228518022873fa34bb7880b062988.png

0x02:

文件上传,前端验证

先上传图片,然后通过bp抓包,修改后缀为html,进行上传

16de3f948a3d291b05cfc8395f805bc5.png

访问即可打印弹出cookie

案例二:

0x01:

在上传文件时不仅会校验文件后缀,在后端也会校验文件头

2b1df691b552f8e34f5e577394863701.png

0x02:

绕过上传

5d7c9330d981eb7303e6690a9701848b.png

上传后的response

bbc08dc962ba024df749af512b748054.png

html上传成功,发现其setcookie也是该业务系统全域名的,但使用的oss服务是阿里的oss相关域名isvstore.oss-cn-hangzhou.aliyuncs.com,不是使用其业务系统的域名,这样这两个域名之间是不能相互跨域的,但aliyuncs.com这个域名如果有业务系统,可能也会被利用。但在我测试过之后发现aliyuncs.com这个域名没有业务系统。所以没有影响,才在这里列出来。

但问题是相通的。

传统解决方案

  1. 后端校验文件后缀类型;

  2. 牛逼点对文件进行重绘;

针对oss解决方案

  1. oss接口开发key管理部分,不同的key可以配置不同类型文件上传权限(服务端改key即可);

  2. 在使用oss时,最好申请一个专用的域名提供文件服务器使用。

除了html,你是否知道还有一种文件在特殊场景下会被利用呢?那就是shtml!

shtml用的是SSI指令,SSI是为WEB服务器提供的一套命令,这些命令只要直接嵌入到HTML文档的注释内容之中即可。

//可以用来读文件

//可以用来执行命令

//也是读文件 与FILE不同他支持绝对路径和../来跳转到父目录 而file只能读取当前目录下的

转载地址:http://utdkx.baihongyu.com/

你可能感兴趣的文章
第 20 章 Nagios
查看>>
python接口自动化9-https请求(SSL)
查看>>
MySQL的rpm和源码两种安装操作
查看>>
JS中的!=、== 、!==、===的用法和区别
查看>>
【★】IT界8大恐怖预言
查看>>
sap关于价值串的说法(转载)
查看>>
采购申请转采购订单错误:在语言EN中没有维护短文本(请重维护物料460300080)
查看>>
Migration to S/4HANA
查看>>
SAP WM LPK1 不能把 cross-material control cycles定义成release order parts
查看>>
HTML5 & CSS3初学者指南(3) – HTML5新特性
查看>>
Linux下源码安装mysql5.6
查看>>
Java实现将一个正整数分解质因数
查看>>
NSTreeController初步使用(四) 展开控制
查看>>
myeclipse安装svn插件
查看>>
网络测试工具Iperf!!!附教程!!!
查看>>
ubuntu16.04开机自启动ssh自动连接screen
查看>>
IPv6地址介绍
查看>>
Boot Camp
查看>>
Skype for business 2015 综合部署系列七:配置 Skype 边缘传输服务器
查看>>
解决nginx不支持websocket
查看>>