对象存储对象存储(OSS)可以有多个桶(Bucket),然后在桶中放入对象(Object),对象包含三部分:Key,Data和元数据。桶存储空间(Bucket)是用户存储对象(Object)的容器,所有对象都必须属于某个存储空间。存储空间具有各种配置属性,包括区域、访问权限、存储类型等。用户可以根据实际需要创建不同类型的存储空间来存储不同的数据。同一存储空间内部是扁平的,没有文件系统目录等概念,所有对象直接属于其对应的存储空间。每个用户可以有多个桶。存储空间的名称在OSS范围内必须是全局唯一的,名称一旦创建不可修改。存储空间内的对象数量没有限制。命名规则同一阿里云账号在同一地域创建的Bucket总数不能超过100个,Bucket创建后名称不能修改。Bucket命名规则如下:Bucket名称在OSS范围内必须是全局唯一的。只能包含小写字母、数字和破折号(-)。必须以小写字母或数字开头和结尾。长度为3~63个字符。示例Bucket名称正确命名示例如下:examplebucket1test-bucket-2021aliyun-oss-bucket对象(Object)是OSS数据存储的基本单位,也称为OSS文件。与传统文件系统不同,对象没有文件目录层次结构。一个对象由元数据(ObjectMeta)、用户数据(Data)和文件名(Key)组成,在存储空间内由唯一的Key标识。例如:https://hxsecurityteam.oss-cn-beijing.aliyuncs.com/AAccTest.pngBucket:hxsecurityteamregion:oss-cn-beijingKey:AAccTest.png对象元信息是一组键值对,代表了一些对象的属性,如最后修改时间、大小等信息,用户也可以在元信息中存储一些自定义信息。可以简单理解为数据标签、描述等信息。这与传统的文件存储不同。在传统的文件存储中,这些信息直接封装在文件中。随着元数据的存在,它可以得到很大的改善。以加快排序、分类和查找对象的速度。数据是存储的数据本体。对象存储利用方式BucketSTS(SecurityToken)使用STS服务为其他用户签发临时访问凭证。该用户可以在指定时间内使用临时访问凭证访问您的OSS资源。临时访问凭证不需要泄露您的长期密钥,让您的OSS资源访问更加安全。使用工具alicloud-toolsGitHub地址:https://github.com/iiiusky/alicloud-tools方法1ak+sk+sts使用命令:AliCloud-Tools.exe--sak--ssk--sts--tokenecs--list--runner方法二OSSBrowserGitHub地址:https://github.com/aliyun/oss-browserBucket对象遍历创建Bucket时,可以选择是否公开。默认为私有权限。Listobject权限,会导致遍历bucket。这时候如果选择publicread,就会出现两种情况。当只配置读写权限设置为publicread或publicreadandwrite时,不能列出对象,但可以直接读取对应的文件(正常情况)如果要列出Object对象,需要设置ListObject在Bucket授权策略中。情况一:如果只配置读写权限为publicread或publicreadandwrite,则不能列出object,但可以直接访问对应的KEY路径(正常情况)Case2如果要列出Object对象,只需要在Bucket授权策略中设置ListObject。这样,当我们访问bucket的域名时,就会发现我们的bucket中的内容已经列出来了。Bucketbucketblocking当不知道bucket名称时,通过爆破得到bucket名称,和目录爆破类似,只是目录爆破一般是通过状态码来判断的,而这个是根据bucket的内容来判断的这一页。AccessDenied:存在一个bucket,但是没有权限访问InvalidBucketName:表示bucket的名称不符合规范,属于无效的bucket名称NoSuchBucket:表示这个bucket不存在。可以编写特定于桶的策略配置。具体的策略配置是指,如果管理员设置了某些IP,UA就可以请求bucket。此时如果GetBucketPolicy配置错误,攻击者就可以获取策略配置。情况一:通过直接访问:http(s)://url/?policy判断是否对Bucket有读权限。可以看到管理员已经为任意一个认证主体配置了所有的Action权限。情况2Burpsuite拦截流量,可以看到此时我们没有访问bucket的权限。我们尝试使用aliyun的cli获取policy。我们可以看到只有UserAgent为UzJu才能访问到Bucket。配置任何文件上传和覆盖。存储桶时,管理员错误地将桶的权限配置为可写,这将允许攻击者向桶上传任意文件,或者覆盖现有文件。如果目标对象存储支持html解析,那么可以使用任意文件上传:XSS钓鱼、挂暗链、挂黑页、供应链中毒等情况一情况二当我们访问存储桶时,会提示我们被政策封锁了。如果此时配置了存储桶的ossBucketPolicy,可以将Deny改为Allow访问。我们可以看到效果设置为Deny,我们只需要将其改为Allow,然后使用PUT方式上传,再使用GET方式获取即可。这时我们可以正常看到bucketObjectinBucketHijackingTakeover假设管理员通过域名解析绑定了一个bucket,但是删除bucket后,管理员没有删除该域名解析的CNAME,就会出现NoSuchBucket访问域名时。因此,您可以登录自己的阿里云账号,创建相同的Bucket。在阿里云下,当Bucket显示NoSuchBucket时,表示可以接管,如果显示AccessDenied,则不可以。假设有以下情况之一,管理员通过域名解析并绑定了一个bucket,但是管理员删除bucket后,域名解析的CNAME并没有被删除,访问域名时出现上述情况,NoSuchBucket.现在我们删除存储桶,会出现如下情况。现在我们再次访问域名,会出现下面的情况来接管bucket。现在阿里云做了限制,必须在传输管理中配置绑定域名。存储桶在以下几种情况下可以被接管。当我们访问存储桶的域名时,会提示NoSuchBucket。这时候我们可以登录自己的阿里云账号,创建同名。至此,我们刷新一下,已经成功接管了bucket。尝试上传文件后,配置公共访问权限。Bucket修改策略当策略可写时,除了上面设置不可访问的数据可以访问获取敏感数据外,如果目标网站引用了s3上的资源文件,我们可以修改策略为读写,即可还将原本可以访问的资源权限设置为不可访问,这样会导致网站瘫痪。方法一可以通过直接PUT一个配置来达到攻击的目的。aliyunossbucket-policyoss://securitytest-geekby--methodput./oss.json方法二访问网站如果我们此时可以修改policy,我们只需要修改获取对象的权限为Deny即可,并且网站不能获取图片、JS等信息后,参考链接:对象存储攻防案例阿里云OSS对象存储攻防阿里云AK+SK泄露STS(SecurityToken)如何使用存储空间命名-对象存储OSS-阿里云
