实战 | 对象存储(OSS)攻防案例

admin 2022年12月21日14:20:18评论121 views字数 2366阅读7分53秒阅读模式

对象存储攻防案例

云上存储己经是企业中常见的一款云上产品,伴随着云上业务的发展,对象存储作为云原生一项重要的能力,暴露出一系列的安全问题,其中的权限配置是管理人员不可忽视的,从攻击者的视角来看几大云存储的攻击方法与利用。

1 对象存储

对象存储中可以有多个桶(Bucket),然后把对象(Object)放在桶里,对象又包含了三个部分:Key、Data 和 Metadata。

实战 | 对象存储(OSS)攻防案例

1.1 Bucket

存储空间(Bucket)是用户用于存储对象(Object)的容器,所有的对象都必须隶属于某个存储空间。存储空间具有各种配置属性,包括地域、访问权限、存储类型等。用户可以根据实际需求,创建不同类型的存储空间来存储不同的数据。

  • 同一个存储空间的内部是扁平的,没有文件系统的目录等概念,所有的对象都直接隶属于其对应的存储空间。

  • 每个用户可以拥有多个存储空间。

  • 存储空间的名称在 OSS 范围内必须是全局唯一的,一旦创建之后无法修改名称。

  • 存储空间内部的对象数目没有限制。

1.2 Object

对象(Object)是 OSS 存储数据的基本单元,也被称为 OSS 的文件。和传统的文件系统不同,对象没有文件目录层级结构的关系。对象由元信息(Object Meta),用户数据(Data)和文件名(Key)组成,并且由存储空间内部唯一的 Key 来标识。

Key 是指存储桶中的唯一标识符,例如一个 URL 为:https://geekby.oss-cn-beijing.aliyuncs.com/MarkDown/202203171716980.png,这里的 geekby 是存储桶 Bucket 的名称,/MarkDown/202203171716980.png 就是 Key。

对象元信息是一组键值对,表示了对象的一些属性,比如最后修改时间、大小等信息,同时用户也可以在元信息中存储一些自定义的信息。可以简单的理解成数据的标签、描述之类的信息,这点不同于传统的文件存储,在传统的文件存储中这类信息是直接封装在文件里的,有了元数据的存在,可以大大的加快对象的排序、分类和查找。

Data 就是存储的数据本体。

2 对象存储的利用方式

2.1 Object 遍历

在创建 Bucket 时,可以选择是否公开,默认是 private 的权限,如果在错误的配置下,给了 Listobject 权限,就会导致可遍历存储桶。

2.1.1 阿里云

实战 | 对象存储(OSS)攻防案例

在此时如果选择公有读的话,会出现两种情况:

  • 在只配置读写权限设置为公有读或公共读写的情况下,无法列出对象,但能够直接读取对应的文件(正常情况)

  • 如果想列出 Object 对象,需要在 Bucket 授权策略中设置 ListObject 即可

实战 | 对象存储(OSS)攻防案例

实战 | 对象存储(OSS)攻防案例

2.2 Bucket 桶爆破

当不知道 Bucket 名称的时候,可以通过爆破获得 Bucket 名称,这有些类似于目录爆破,只不过目录爆破一般通过状态码判断,而这个通过页面的内容判断。

2.2.1 阿里云

  • AccessDenied:存在存储桶,但无权限访问

实战 | 对象存储(OSS)攻防案例

  • InvalidBucketName:表示存储桶的名称不符合规范,属于无效的存储桶名称

实战 | 对象存储(OSS)攻防案例

  • NoSuchBucket:表示不存在这个存储桶

实战 | 对象存储(OSS)攻防案例

2.3 特定的 Bucket 策略配置

特定的策略配置的指的是,如果管理员设置了某些 IP,UA 才可以请求该存储桶的话,此时如果错误的配置了 GetBucketPolicy,可导致攻击者获取策略配置

2.3.1 阿里云

通过直接访问:http(s)://url/?policy 来确定是否对 Bucket 具有读取权限

实战 | 对象存储(OSS)攻防案例

可以看到,管理员配置了对于任意认证主主体开放了所有 Action 的权限。

2.4 任意文件上传与覆盖

如果在配置存储桶时,管理员错误的将存储桶权限,配置为可写,这将会导致攻击者可上传任意文件到存储桶中,或覆盖已经存在的文件

2.4.1 阿里云

实战 | 对象存储(OSS)攻防案例

实战 | 对象存储(OSS)攻防案例

如果目标的对象存储支持 html 解析,那就可以利用任意文件上传进行 XSS 钓鱼、挂暗链、挂黑页、供应链投毒等操作。

2.6 Bucket 接管

假设管理员通过域名解析并绑定了一个存储桶,但是管理员将存储桶删除后,没有将域名解析的 CNAME 删除,这时会访问域名就会出现 NoSuchBucket 。因此可以登录自己的阿里云账号,创建同样的 Bucket 即可。

2.6.1 阿里云

在阿里云下,当 Bucket 显示 NoSuchBucket 说明是可以接管的,如果显示 AccessDenied 则不行。

实战 | 对象存储(OSS)攻防案例

2.7 Bucket 可修改

如果拥有 Bucket Policy 的编辑权限,可以通过上传或修改一个新的配置,进而实现攻击(拒绝服务或者修改访问策略)

2.7.1 阿里云

可以通过直接 PUT 一个配置,达到攻击的目的。

aliyun oss bucket-policy oss://securitytest-geekby --method put ./oss.json

参考

火线沙龙——浅析云存储的攻击利用方式https://www.bilibili.com/video/BV1Z44y1J7Rs

来源

作者:geekby原文地址:https://www.geekby.site/2022/03/%E5%AF%B9%E8%B1%A1%E5%AD%98%E5%82%A8%E6%94%BB%E9%98%B2%E6%A1%88%E4%BE%8B/#2-%E5%AF%B9%E8%B1%A1%E5%AD%98%E5%82%A8%E7%9A%84%E5%88%A9%E7%94%A8%E6%96%B9%E5%BC%8F如有侵权,请联系删除

实战 | 对象存储(OSS)攻防案例


推荐阅读:


实战 | 记一次SSRF攻击内网的实战案例


干货 | 文件上传绕过的一次思路总结学习

实战 | 文件上传漏洞之最全代码检测绕过总结


实战 | WAF-Bypass之SQL注入绕过思路总结


2022年零基础+进阶系统化白帽黑客学习 |  全新版本


点赞,转发,在看


实战 | 对象存储(OSS)攻防案例

原文始发于微信公众号(HACK学习呀):实战 | 对象存储(OSS)攻防案例

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年12月21日14:20:18
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   实战 | 对象存储(OSS)攻防案例http://cn-sec.com/archives/1476275.html

发表评论

匿名网友 填写信息