OSS 签名绕过上传任意文件到别人的网站

admin 2025年5月15日10:55:14评论2 views字数 1428阅读4分45秒阅读模式

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"]]
]
}

解码一下上传策略 policy

看一眼 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 都可以,整点视频,都可以随便传。

讨论区:

1、micate

如果你允许用户上传文件且允许上传之后的文件公开访问,理论上就可以被利用为 图床、x 床,因为用户完全可以通过修改文件后缀、分割大文件的方式来滥用上传和访问; 可以通过限制 referer 的方式避免站外引用;或者设置 bucket 为私有 + 登录后可访问(临时签名 token )的方式来实施上传、访问限制。

2、my3157

客户端直接上传就是这样,签名的时候把 Content-MD5 加进去就可以了

3、night98

你这个本来就是上传策略写的有问题,正常应该就是写死具体上传路径比如前端请求的 abc.jpg ,你给他返回的就是只能上传到 images/2025/唯一标识-abc.jpg 这个路径,而不是通用前缀。至于他传上来的 abc.jpg 到底是图片还是视频文件本来就不重要。

4、lyxxxh2

content-type 验证确实没用。 之前自己站验证的 content-type,然我我 burpsite 抓下包。 改下 image/pn,php 木马就上传了。

脚本到 oss 就到呗,还整改,醉了。 传些木马到一些大站,举报他们网站有木马。

5、mcfog

正常设计收上传的桶应该是个隔离暂存的桶,传完自己 check 过没问题再挪到持久存储的正式的存储中。其他各种稀奇古怪的垃圾直接用短 TTL 全鲨了

6、varrily [ "eq", "$key", "upload/6yKip7EGqYB.jpg" ],

前端限制文件类型选择,后端随机文件名+限定扩展名,私有桶+签名访问。

但用户把一个 apk 改成 jpg 肯定是防不住的,也没什么影响。

7、fdrag0n

云上传后端不处理文件,所以理论上可以上传任何文件。

如果担心被盗刷流量可以考虑:限制外站引用+签名+限制返回 content-type 白名单+图片云端转码等方式来防止被拿去当盗版视频分片

原文始发于微信公众号(土拨鼠的安全屋):OSS 签名绕过上传任意文件到别人的网站

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年5月15日10:55:14
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   OSS 签名绕过上传任意文件到别人的网站http://cn-sec.com/archives/4057237.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息