阿里云OSS存储攻击总结

xioy
2024-07-05 / 0 评论 / 7 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2024年10月04日,已超过65天没有更新,若内容或图片失效,请留言反馈。

1. Bucket目录遍历漏洞

1.1 漏洞环境搭建

首先登录阿里云,然后依次选择产品-存储-对象存储OSS

进入后可以免费开通,点击开通就好了。因为我已经开通过了,所以没有免费开通的按钮,我这边点击管理控制台。

进入功能后创建存储桶,其中读写权限设置为公共读,然后点击完成创建。

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

  1. 读写权限单纯设置为公有读或公共读写的情况下,是无法列出对象的。
  2. 列出对象,需要在Bucket授权策略中设置:只读(包含ListObject操作)。

具体设置看漏洞复现

1.2 情况1漏洞复现

创建完后点击刚刚创建的存储桶-文件列表,即可管理存储桶中的文件。

点击上传文件按钮,上传测试文件。

访问存储桶时发现没有列举刚刚上传的文件。

由于我们刚刚把文件上传的地方在根目录下,所以在域名后面加上文件名(文件名区分大小写)即可下载到文件。

1.3 情况2漏洞复现

依次点击刚刚创建的存储桶-Bucket授权策略-新增授权-只读(包含ListObject操作)。

访问存储桶时发现列举了刚刚上传的文件,并且访问文件同样可以下载到文件。

2. Bucket任意文件上传与文件覆盖漏洞

2.1 漏洞环境搭建

依次点击刚刚创建的存储桶-读写权限-公共读写

(这一步可以设置也可以不设置,设置了可以更直观的展现任意文件上传的效果)依次点击刚刚创建的存储桶-Bucket授权策略-新增授权-只读(包含ListObject操作)。

2.2 任意文件上传漏洞复现

使用bp通过PUT方式上传一个名为1.txt,内容为1的文件到存储桶中。

访问存储桶时发现列举了刚刚上传的文件。

并且文件内容一模一样,也可以下载到文件。

2.3 文件覆盖漏洞复现

使用bp通过PUT方式上传一个名为1.txt,内容改为2的文件到存储桶中。

访问存储桶时发现列举了刚刚上传的文件。

原来1.txt的内容为1,通过重新上传后文件内容被修改为了2。

3. 阿里AccessKeyId、SecretAccessKey泄露漏洞

3.1 漏洞描述

AccessKey是阿里云提供给用户的永久访问凭据,包括AccessKey ID和AccessKey Secret两部分。AccessKey ID用于标识用户,AccessKey Secret用于验证用户的密钥,主要用于程序方式调用云服务API12345。用户可以为阿里云账号和RAM用户创建一个访问密钥(AccessKey)1245。在调用阿里云API时您需要使用AccessKey完成身份验证1235。

3.2 漏洞复现

泄露的地方有很多例如:

  1. 反编译安装包,找到泄露的Key。
  2. 网站的源代码、js、heapdump中找到泄露的Key。
  3. GitHub等开源平台中的源代码可发现存在泄露的Key。

这里用我自己的作为示例,假设我的AccessKeyId、SecretAccessKey在某处泄露了攻击者就可以通过工具接管到目标存储桶。

4. Bucket爆破漏洞

4.1 漏洞描述

当不知道存储桶名称时,可以通过爆破获得存储桶名称。这有些类似于目录爆破,只不过目录爆破一般通过状态码判断,而这个通过页面的内容判断。对于阿里云OSS不存在有两种返回情况,分别是InvalidBucketName和NoSuchBucket。

存储桶地址:

样例:https://qazzaq.oss-cn-beijing.aliyuncs.com/
解释:https://存储桶名称.存储桶地址.aliyuncs.com/

4.2 漏洞复现

NoSuchBucket:表示没有这个存储桶。

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

当存储桶存在时,则会返回以下两种情况:

5. Bucket接管漏洞

5.1 漏洞描述

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

5.2 漏洞复现

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

6. Bucket特定策略漏洞

6.1 漏洞描述

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

6.2 漏洞复现

访问目标发现没有权限。

查看一下存储桶设置的访问策略,可以看到需要符合UserAgent为UzJu才可以访问。

回到bp把UserAgent参数修改为UzJu,即可获取到数据。

7. Bucket策略配置可写漏洞

7.1 漏洞描述

当策略可写的时候,可以把原本不能访问到的数据设置为可访问从而获得敏感数据。

7.2 漏洞复现

当我们访问存储桶的时候,会提示我们已经被policy拦截。

如果策略可写时,把Effect中的Deny更改为Allow即可。

随后使用PUT方法上传。

此时就可以访问到存储桶中的信息了。

8. Bucket修改策略导致网站瘫痪漏洞

8.1 漏洞描述

当策略可写的时候,除了上面的将可原本不可访问的数据设置为可访问从而获得敏感数据外,如果目标网站引用了资源文件,而且我们可以对该策略进行读写的话,也可以将原本可访问的资源权限设置为不可访问,这样就会导致网站瘫痪了。

8.2 漏洞复现

这是站点正常的样子。

如果可以修改策略,只需要将获取该对象的权限修改为Deny,该网站就无法获取到图片、JS等信息了。

修改后站点已无法获取到信息。

0

评论 (0)

取消