django图片上传到oss_从攻防角度看oss安全(二)

本文探讨了OSS(对象存储服务)中常见的安全问题,包括任意文件上传和跨域风险。攻击者可以通过上传包含XSS payload的HTML文件,利用设置的全局Cookie,窃取用户信息。即使文件不被解析,仍存在安全隐患。解决方案包括后端校验文件类型,使用专用域名,并限制不同Key的上传权限。同时,SHTML文件因支持SSI指令,也可能成为潜在的安全威胁。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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只能读取当前目录下的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值