对象存储攻防案例
云存储是企业中常见的云产品。随着云服务的开发,对象存储是一种重要的云本机功能,揭示了一系列的安全问题,其中有许可配置是管理者无法忽略的。从攻击者的角度来看,几种主要的云存储攻击方法和利用。1 对象存储
对象存储中可以有多个存储桶,然后将对象(对象)放在存储桶中。该对象包含三个部分:键,数据和元数据。
1.1 Bucket
存储空间(存储桶)是用户用于存储对象的容器,所有对象都必须属于存储空间。存储空间具有各种配置属性,包括区域,访问权限,存储类型等。用户可以根据实际需求创建不同类型的存储空间来存储不同的数据。同一存储空间的内部是平坦的,没有文件系统目录的概念,并且所有对象都直接隶属于它们相应的存储空间。
每个用户都可以拥有多个存储空间。
存储空间的名称必须在OSS的范围内在全球范围内独特,并且创建后不能修改名称。
存储空间内的对象数量没有限制。
1.2 Object
对象是OSS存储数据的基本单位,也称为OSS文件。与传统文件系统不同,对象没有文件目录层次结构。一个对象由元信息(对象元),用户数据(数据)和文件名(键)组成,并由存储空间内的唯一键标识。密钥是指存储桶中的唯一标识符。例如,一个URL为:https://geekby.oss-cn-beijing.aliyuncs.com/markdown/202203171716980.png。在这里,Geekby是存储桶存储桶的名称, /marksdown/202203171716980.png是关键。
对象元信息是一组键值对,代表对象的某些属性,例如最后一个修改时间,大小和其他信息。同时,用户还可以在元信息中存储一些自定义信息。它可以简单地理解为诸如数据标签和描述之类的信息。这与传统文件存储不同。在传统文件存储中,这种类型的信息直接封装在文件中。由于存在元数据,可以大大加速对象的分类,分类和搜索。
数据是存储的数据本体。
2 对象存储的利用方式
2.1 Object 遍历
创建水桶时,您可以选择是否公开。默认值是私人许可。如果在错误的配置中给出了ListObject权限,则将导致存储桶进行遍历。2.1.1 阿里云

如果您目前选择公众阅读,将发生两种情况:
如果您仅配置读写权限以将其设置为公共读取或公开读写,则不能列出对象,但是可以直接读取相应的文件(正常)
如果要列出对象,则需要在存储授权策略中设置ListObject


2.2 Bucket 桶爆破
当您不知道存储桶名时,可以通过爆破来获取存储桶名。这与目录爆破有点相似,只是目录爆破通常由状态代码判断,并且由页面内容判断。2.2.1 阿里云
AccessDendied:存在存储桶,但没有允许访问的许可
InvalidBucketName:指示存储桶的名称不符合规范,并且属于无效的存储桶名称。

Nosuchbucket:意味着这个水桶不存在

2.3 特定的 Bucket 策略配置
特定的策略配置是指以下事实:如果管理员设置某些IP,则UA可以请求存储桶。如果错误地配置了GetBucketPolicy,则可能导致攻击者获得策略配置。2.3.1 阿里云
确定您是否已通过直接访问对存储桶进行了阅读权限:http(s): //url/?policy
如您所见,管理员已为所有身份验证主体配置了所有操作权限。
2.4 任意文件上传与覆盖
如果管理员在配置存储桶时错误地将存储桶权限配置为可写的,则会导致攻击者将任何文件上传到存储桶或覆盖现有文件。2.4.1 阿里云


如果目标对象存储支持HTML解析,则可以使用任何文件上传来执行XSS网络钓鱼,悬挂深色链,悬挂黑色页面,供应链中毒和其他操作。
2.6 Bucket 接管
假设管理员可以解析域名并绑定一个存储桶,但是在管理员删除存储桶后,域名分辨率CNAME不会删除域名分辨率。目前,将访问域名,并将出现NoSuchBucket。因此,您可以登录到您的阿里巴巴云帐户并创建相同的存储桶。2.6.1 阿里云
在阿里巴巴云下,当存储桶显示Nosuchbucket时,就可以接管,但是如果显示访问量,则无法完成。
2.7 Bucket 可修改
如果您具有对存储策略的编辑权限,则可以上传或修改新配置以实现攻击2.7.1 阿里云
可以通过直接的PUT配置来实现攻击的目的。1
Aliyun OSS桶式Policy OSS: //SecurityTest-Geekby -Method put ./oss.json