乐趣区

关于安全:浅析云存储的攻击利用方式

文章首发于:前线 Zone 社区

作者:高鹏

高鹏,前线云平安实验室成员,明天分享的主题是《浅析云存储的攻打利用形式》。


本次的议题,对于云存储的一个攻打利用形式,在 SRC 破绽开掘,或在前线平安平台的众测我的项目中,咱们也会收到很多对于对象存储的一个劫持和权限配置的一些问题,对象存储在平安这一块也是一个不可疏忽的方向。

咱们总共把议题分为四个局部。

首先第一个局部是什么是对象存储,第二个局部对象存储利用形式,在这一环节中,咱们举例了大略有十种利用对象存储利用形式,而后最初咱们再对它进行一个总结,而后咱们在第二第三局部,咱们精心筛选了前线后盾平安众测我的项目中实在的几个破绽,并且奖金较高的,与对象存储无关的破绽进行举例,最初就是咱们的问答与探讨。

先看一下什么是对象存储。可能没有理解过的,对这个货色没有一个概念,就如同对象存储是把本人的对象存储在云上,把本人的女朋友存在云上?或者说跟开发一样,本人 new 一个对象,其实并不是。

咱们在国内常见,比拟大的对象存储提供商,还有包含国外的一些提供商,咱们首先看一下,第一个就是腾讯云,而后第二个就是华为云,第三个就是阿里云,到国外的话,第一个必定就是。亚马逊,而后就是微软的 Azure,而后还有谷歌的 Google cloud。

咱们首先来看一下这六大云的一个对象存储的一个利用形式。

1、Bucket 公开拜访

首先第一个就是 bucket 的一个公开的一个拜访,管理员在创立 bucket 的时候,默认的是 priavte 的一个权限,如果在谬误的一个配置下,例如说给了一个 ListObject 的一个权限,会导致存储桶的遍历。

这是右边是 aws 的,而后左边是阿里云的。然而这里就存在两个问题 1、如果首先第一个问题是,如果咱们只配置私有读或者私有读写的状况下,其实咱们是无奈失常的列出他所上面的一些 Key,造成遍历存储桶的状况,咱们失常拜访一个咱们设置了私有读或私有读写的一个存储桶。然而这个存储桶咱们拜访的时候,他会通知咱们是 Access Denied,然而咱们能够通过拜访它上面的一个 key,或者对应就是咱们艰深点来讲,就是拜访它对应的一个文件,咱们就能下载到这个文件。

如果想列出 Object,那么就须要在 Bucket 的受权策略中,咱们设置 ListObject,咱们在左边的图片就能够看到,它能够把这个所有的货色给列出来。

2、Bucket 桶爆破

Bucket 桶的爆破,咱们在惯例的浸透中,扫描目录,是通过返回的状态码来进行判断,而这里是通过页面返回不同的报错信息来进行判断,如下图

不过值得注意的是,在微软的 Azure 中,如果咱们拜访一个存在的存储账户下的一个容器,首先会提醒咱们,InvalidQueryParameterValue,然而如果不存在的话,会显示无法访问该网站。

也能够通过 CNAME,DNS 解析的形式去获取域名的 CNAME。

3、特定的 Bucket 策略配置

咱们拜访一个 bucket,如果存在某种限度,例如,UserAgent,IP 等,管理员谬误的配置了 GetBucketPolicy 的权限,咱们能够通过获取 Bucket 的策略配置来获取存储桶中的内容。

4、Bucket Object 遍历

Bucket 的遍历也就是如果设置了 ListObject 权限,而后咱们就能够看到它下面所存在的货色,其实是在 SRC,或者说在众测我的项目中是十分多的,咱们能够通过 curl get 的形式去下载张图片。

5、任意文件上传与笼罩

将任意文件上传至存储桶,或者说也能够笼罩存储桶上曾经有的一个文件。这里次要关系到一个谬误的配置策略,PutObject。

6、AccessKeyId,SecretAccessKey 泄露

能够通过反编译 APK,小程序,查看 JS 代码中来获取泄露的 AK 等,稍后在第三个环节,咱们也会通过实战案例来看 AK 泄露的问题。


在 JS 代码中也能够找到泄露的 Key

下图中提供了一款工具 HaE

https://github.com/gh0stkey/HaE

这里咱们举荐一款 Burp 的插件,HaE,可能无效的在测试中帮忙测试人员疾速的发现存在泄露的 AK,身份证,电话号码,邮箱等。

7、Bucket 劫持与子域接管

这是比拟常见的,也是众测我的项目中比拟多的,原理也很简略,bucket 的名称只能有一个,如果管理员将 Bucket 设置了自定义域名,比方在域名中增加 DNS 解析,CNAME 指向存储桶的域名,然而有一天管理员将存储桶删掉,然而并没有删掉在域名中的 DNS 解析,这种状况就会导致咱们能够去注册同样的存储桶名称来劫持该域名,咱们只须要上传任意的文件,就能够让这个域名或者存储桶显示咱们想要的货色。

不过须要留神的是,在腾讯云的对象存储中,咱们无奈造成以上的操作,因为在腾讯云的对象存储域名中,有一个 APPID,这个 APPID 来自咱们的账户信息中。

随后咱们再举例 AWS 下的存储桶劫持,原理同上。


而后 aws 下是有一个比拟有意思的中央,就是咱们来判断 aws 存储桶的域名地址的时候,其实咱们是能够间接很间接的来判断进去的,就比如说它的域名是 http://huoxian.cn,那么前面加上.s3. 地区.http://amazon.com 就能够了,起因是因为,在 AWS 下,配置存储桶的时候,想应用自定义的域名,存储桶的名称必须跟域名的名称一样。

咱们再来看一下微软的 Azure 下的劫持,原理也同上。



8、存储桶的配置可写

存储桶的配置可写,咱们拜访一个存储桶时,如果提醒咱们 Access Denied 的话,如下图。

咱们发现,该存储桶谬误的配置了 PutBucketPolicy 和 GetBucketPolicy,此时咱们就能够获取存储桶的配置,而后再批改写入配置即可。

9、批改 Bucket 策略为 Deny 使业务瘫痪

当策略可写的时候,除了以上的一些操作,例如网站引入了某个 S3 上的资源,图片,JS 等,咱们能够通过批改 Effect 为 Deny,导致网站无奈获取这些资源随之瘫痪。

10、批改网站援用的 S3 资源进行钓鱼

这里比拟好了解,咱们既然领有上传的权限了,咱们能够通过批改外面的资源,进行一个钓鱼或净化。

11、六大私有云攻击方式统计表

咱们总结了六大私有云的存储桶利用形式。

12、Lambda 函数执行命令

首先咱们先创立一个 Lambda 函数,而后在抉择触发器的时候抉择咱们创立的存储桶,并且触发事件,咱们抉择所有事件都会触发。

咱们应用 Python 编写函数,首先咱们应用 print 将 event 中的信息输入到 Cloud Watch 咱们须要留神 Object 中的 Key,假如一种状况,这里的 KEY 来自存储桶的文件名,如果管理员在编写代码时将文件夹当成命令或其余的形式进行解决,是否造成命令执行。

很显然,是能够的,并且咱们能够应用 curl 命令将信息外带进去。

在本环节中,咱们筛选了,在前线平安众测我的项目中,破绽奖金比拟高的一些破绽进行举例。

1、反编译小程序泄露 AccessKey

该破绽的奖金为 6500,咱们在图片中的 IDEA 中能够看到,这里通过 ABD 获取小程序的包反编译后在 JS 代码中找到的存储桶的 KEY,随后连贯下来,在存储桶中获取到了大量的敏感数据。

2、JS 文件中存在的 AccessKey 泄露

该破绽的奖金为 7000,在上图中能够看到,在 JS 代码中,找到了泄露的 KEY,随后应用 OSS 浏览器连贯下来,发现了大量的用户身份证图片等。

3、阿里云存储桶劫持

该破绽的奖金为 2500,在第二张图咱们能够看到,拜访域名显示 NoSuckBucket,在 HostID 中咱们能够看到存储桶的域名,随后创立了一个跟这个名称一样的存储桶,并上传一个 1.txt 中蕴含 test by huoxian,再次拜访该域名能够发现胜利劫持了该域名。

4、GitHubAccessKey 泄露

在上图中咱们能够看到,通过关键字的搜寻,能够在 github 中发现上传的 AK,导致泄露敏感信息。

退出移动版