网站被安全部门发了一份漏洞报告,讲的是上传一个脚本文件到了云存储,经过仔细研究发现,确实 6

OSS 的签名直传签名一般涨这样

{
    "accessid": "MlLTAI5Zt...",
    "host": "https://oss-cn-shanghai.aliyuncs.com",
    "policy": "eyJleHBpcmF0aW9uIjoiM....",
    "signature": "TXKWgd+kz3Qy3bEOlZO+zPd4ZLY=",
    "expire": 1743080451,
    "callback": "ja1VybCeyJjYWxsYmFI6Im...",
}

解码一下上传策略policy

{
	"expiration": "2025-03-22T10:00:51Z",
	"conditions": [
		["starts-with", "$key", "image/2025/"],
		["content-length-range", 0, 2048],
		["in", "$content-type", ["image/png"]]
	]
}

看一眼 $key$content-type

你通过脚本 curl 啥的都行组装一个form-data表单 把一个vme50.apk塞给表单

  • key = image/2025/vme50.apk
  • file = binary content-type image/png 人工陪成 签名里面要求的就行

然后你文件就传上去了,你通过对方的 url+/image/2025/vme50.apk 就能访问了

就是你找个大站,只要用 oss 直传的 你传个 html 都可以,整点视频,都可以随便传

网站要整改了:泪水哦~

举报· 1558 次点击
登录 注册 站外分享
14 条回复  
yanqiyu 小成 6 天前
也就是说签名只保护了路径前缀,甚至文件类型 OSS 没检验反而信任用户给的 header
youloge 楼主 初学 6 天前
为啥这样呢? 我都配了文件类型限制 $content-type,经客服提醒:OSS 不处理真实文件类型判断的,客户端说它是图片,OSS 就认为他是图片。直传这玩意不能就给前端,会出事。
timedivision 初学 6 天前
只要是 oss 上传都行吗?
youloge 楼主 初学 6 天前
都可以:去支付宝 阿里云 找上传公开接口,可以丢个 html 上去玩
suhu 初学 6 天前
常规的 oss/s3 实现管 mime-type 吗(孤陋寡闻了)
micate 初学 6 天前
如果你允许用户上传文件且允许上传之后的文件公开访问,理论上就可以被利用为 图床、x 床,因为用户完全可以通过修改文件后缀、分割大文件的方式来滥用上传和访问; 可以通过限制 referer 的方式避免站外引用;或者设置 bucket 为私有 + 登录后可访问(临时签名 token )的方式来实施上传、访问限制。
my3157 小成 6 天前
客户端直接上传就是这样,签名的时候把 Content-MD5 加进去就可以了
youloge 楼主 初学 6 天前
@my3157 还不是可以随便定义,oss 好像连 Md5 都不会验证
youloge 楼主 初学 6 天前
@micate 差别很大! 图床:是视频前面+60 字节伪装成图片,起码你是直接不能打开的,费流量没危害 绕过:你拿个图片上传口子,可以把整个前端打包文件夹连图带脚本全部传上去传上去 连二级三级目录都能整
12下一页
返回顶部