aliyun-云服务OSS攻击点
0x01 前置知识
全文都是在阿里云的OSS环境上进行的。
在讲oss可能存在的漏洞前,我们先来了解以下oss对象存储服务。
1.1 oss的存储形式

假设我在某个云厂商上开启了一个oss服务,创建了一个名xxx的存储桶,上传了一个1.txt的文件,1.txt里的内容是123456。访问1.txt得到的链接为https://xxx.oss-cn-hongkong.aliyuncs.com/1.txt
则我们可以根据这个访问链接分析出来以下信息:
| 关键词 | 含义 |
|---|---|
| 厂商 | aliyun(阿里云) |
| 地区 | hongkong(香港) |
| Bucket | xxx |
| Key | 1.txt |
| Data | 123456 |
1.2 oss和域名进行绑定。
-
没有将bucket与域名进行绑定的情况:

-
bucket与域名进行了绑定的情况:

一般来说,如果没有将bucket与域名进行绑定,直接访问oss资源链接会浏览器将该文件下载下来,而不会去解析该文件,显示文件中的内容。
0x02 安全测试
2.1 任意文件读写
关键字---->ListBucketResult
可以看到ListBucketResult里的内容,说明匿名者拥有公共读的权限,这时候就可以尝试写入文件,看是否能成功,是否有公共写的权限。
我们可以将方法改成PUT方法,把文件进行上传。
2.2 接管域名
在创建bucket时绑定域名,在删除该bucket的时候忘记解绑该域名,这就是我们要寻找的目标。
关键字----> NoSuchBucket

我们怎么做可以接管该域名?非常简单,只要去对应的云厂商创建一个一模一样的bucket即可。
在阿里云的oss管理控制台中创建一个名字与上面桶名一致的bucket。再访问这个域名,发现提示代码已经变成了 AccessDenied,说明这个bucket已经创建成功,但是没有读写权限。

在这个桶中上传一个1.txt,内容是123456,读写权限设置为公共读,bucket授权策略为只读(包括ListObject)。



完成以上操作后再次访问该域名,发现该域名可以成功读取bucket中的信息,得知key为1.txt。

若访问域名/key,成功访问到了文件,看到了文件里的内容,这时候已经成功接管了该域名。

若是直接访问oss资源链接,就会直接将文件下载下来,不会对文件进行解析。

2.3 AK/SK泄露
accessKey/secretKey可能会在小程序,app,前端JS上泄露。
对于前端js的ak/sk泄露,我们可以F12直接查找各个厂商ak/sk的关键词看是否能够找到,或者是使用插件findsomethings。
对于小程序和APP,我们可以对它们进行反编译,在反编译好的源码中查看是否有泄露ak/sk。

浙公网安备 33010602011771号