浅析云存储的攻击利用方式

本文涉及的产品
对象存储 OSS,20GB 3个月
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: 众测项目中,我们也会收到很多关于对象存储的一个劫持和权限配置的一些问题,对象存储在安全这一块也是一个不可忽略的方向。

文章首发于:火线Zone社区

作者:高鹏

高鹏,火线云安全实验室成员,今天分享的主题是《浅析云存储的攻击利用方式》。

https://pic4.zhimg.com/80/v2-953974bcacf64a95d8b17a5e7dff4cfb_1440w.jpgimage.png

https://pic2.zhimg.com/80/v2-64416d6c4da62818a2001968627fe099_1440w.jpgimage.png

本次的议题,关于云存储的一个攻击利用方式,在SRC漏洞挖掘,或在火线安全平台的众测项目中,我们也会收到很多关于对象存储的一个劫持和权限配置的一些问题,对象存储在安全这一块也是一个不可忽略的方向。

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

https://pic2.zhimg.com/80/v2-c2fef7f2ee45e83b8a9b9e3e515287c1_1440w.jpgimage.png

首先第一个部分是什么是对象存储,第二个部分对象存储利用方式,在这一环节中,我们举例了大概有十种利用对象存储利用方式,然后最后我们再对它进行一个总结,然后我们在第二第三部分,我们精心挑选了火线后台安全众测项目中真实的几个漏洞,并且奖金较高的,与对象存储有关的漏洞进行举例,最后就是我们的问答与讨论。

https://pic1.zhimg.com/80/v2-fb17b7ea9c4c20c4cbc4cbd9ae4724b8_1440w.jpgimage.png

先看一下什么是对象存储。可能没有了解过的,对这个东西没有一个概念,就好像对象存储是把自己的对象存储在云上,把自己的女朋友存在云上?或者说跟开发一样,自己new一个对象,其实并不是。

https://pic4.zhimg.com/80/v2-4528d439fc1b185d1c5348bb60b9fbe3_1440w.jpgimage.png

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

https://pic2.zhimg.com/80/v2-1507858ee19e297ebb9bef830cfebfb9_1440w.jpgimage.png

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

https://pic1.zhimg.com/80/v2-abd8e67dcc2670004598b2df65686384_1440w.jpgimage.png

1、Bucket公开访问

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

https://pic2.zhimg.com/80/v2-b4f1a4106f8dd18351eee4fb7e78db3d_1440w.jpgimage.png

这是左边是aws的,然后右边是阿里云的。但是这里就存在两个问题1、如果首先第一个问题是,如果我们只配置公有读或者公有读写的情况下,其实我们是无法正常的列出他所下面的一些Key,造成遍历存储桶的情况,我们正常访问一个我们设置了公有读或公有读写的一个存储桶。但是这个存储桶我们访问的时候,他会告诉我们是Access Denied,但是我们可以通过访问它下面的一个key,或者对应就是我们通俗点来讲,就是访问它对应的一个文件,我们就能下载到这个文件。

https://pic1.zhimg.com/80/v2-15f58cef8c6b21862f812e6ceef09d38_1440w.jpgimage.png

如果想列出Object,那么就需要在Bucket的授权策略中,我们设置ListObject,我们在右边的图片就可以看到,它可以把这个所有的东西给列出来。

https://pic4.zhimg.com/80/v2-e3801e440d7903367dc9ec82936100a3_1440w.jpgimage.png

2、Bucket桶爆破

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

https://pic3.zhimg.com/80/v2-78de9869a6e53560f46ed9b263baf5de_1440w.jpgimage.png

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

也可以通过CNAME,DNS解析的方式去获取域名的CNAME。

3、特定的Bucket策略配置

我们访问一个bucket,如果存在某种限制,例如,UserAgent,IP等,管理员错误的配置了GetBucketPolicy的权限,我们可以通过获取Bucket的策略配置来获取存储桶中的内容。

https://pic3.zhimg.com/80/v2-dbfe5f6d92a2ccd2b9d5ba568d637f06_1440w.jpgimage.png

4、Bucket Object遍历

Bucket的遍历也就是如果设置了ListObject权限,然后我们就可以看到它上面所存在的东西,其实是在SRC,或者说在众测项目中是非常多的,我们可以通过curl get的方式去下载张图片。

https://pic1.zhimg.com/80/v2-46bceb77b586c3e5918cedf85baf6910_1440w.jpgimage.png

5、任意文件上传与覆盖

将任意文件上传至存储桶,或者说也可以覆盖存储桶上已经有的一个文件。这里主要关系到一个错误的配置策略,PutObject。

https://pic4.zhimg.com/80/v2-e94090c285e8629e5ee6cd0059a705b7_1440w.jpgimage.png

6、AccessKeyId,SecretAccessKey泄露

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

https://pic2.zhimg.com/80/v2-1742fe8dcc84668a5d97cfd7afd25549_1440w.jpgimage.png
https://pic4.zhimg.com/80/v2-59187d895d229a512478e42b1d24ee3b_1440w.jpgimage.png

在JS代码中也可以找到泄露的Key

下图中提供了一款工具HaE

https://github.com/gh0stkey/HaE

https://pic4.zhimg.com/80/v2-c1365b627eb12ef4ab70034edc5564d3_1440w.jpgimage.png

这里我们推荐一款Burp的插件,HaE,能够有效的在测试中帮助测试人员快速的发现存在泄露的AK,身份证,电话号码,邮箱等。

7、Bucket劫持与子域接管

这是比较常见的,也是众测项目中比较多的,原理也很简单,bucket的名称只能有一个,如果管理员将Bucket设置了自定义域名,比如在域名中添加DNS解析,CNAME指向存储桶的域名,但是有一天管理员将存储桶删掉,但是并没有删掉在域名中的DNS解析,这种情况就会导致我们可以去注册同样的存储桶名称来劫持该域名,我们只需要上传任意的文件,就可以让这个域名或者存储桶显示我们想要的东西。

https://pic3.zhimg.com/80/v2-8f3c8b224262d78d36cdb3b50c05eb46_1440w.jpgimage.png

不过需要注意的是,在腾讯云的对象存储中,我们无法造成以上的操作,因为在腾讯云的对象存储域名中,有一个APPID,这个APPID来自我们的账户信息中。

https://pic4.zhimg.com/80/v2-178188d0881a8c43fa4311bd3fccf35f_1440w.jpgimage.png

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

https://pic1.zhimg.com/80/v2-7e5d2bf54eaecf1acc6819d216f6cac4_1440w.jpgimage.png
https://pic4.zhimg.com/80/v2-d8bd234ebb7972776182080b31343f23_1440w.jpgimage.png

然后aws下是有一个比较有意思的地方,就是我们来判断aws存储桶的域名地址的时候,其实我们是可以直接很直接的来判断出来的,就比如说它的域名是http://huoxian.cn,那么后面加上.s3.地区.http://amazon.com就可以了,原因是因为,在AWS下,配置存储桶的时候,想使用自定义的域名,存储桶的名称必须跟域名的名称一样。

https://pic1.zhimg.com/80/v2-8a2e57508039c24317caa5121d40ddc8_1440w.jpgimage.png

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

https://pic2.zhimg.com/80/v2-387fea0aeaf56499258b78de4db16855_1440w.jpgimage.png
https://pic4.zhimg.com/80/v2-4bf5e91a24b3fdf572b6e9878cc3936f_1440w.jpgimage.png
https://pic4.zhimg.com/80/v2-f065cd7308c17cecd685c705d132bb8b_1440w.jpgimage.png

8、存储桶的配置可写

存储桶的配置可写,我们访问一个存储桶时,如果提示我们Access Denied的话,如下图。

https://pic2.zhimg.com/80/v2-54b34cd80a9fd7b5cfb36c35250df229_1440w.jpgimage.png

我们发现,该存储桶错误的配置了PutBucketPolicy和GetBucketPolicy,此时我们就可以获取存储桶的配置,然后再修改写入配置即可。

https://pic4.zhimg.com/80/v2-aad315c7e3d395a2562b02a8d2ca087b_1440w.jpgimage.png

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

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

https://pic1.zhimg.com/80/v2-5171bd83db0b0dac0236150311f9ace0_1440w.jpgimage.png

10、修改网站引用的S3资源进行钓鱼

这里比较好理解,我们既然拥有上传的权限了,我们可以通过修改里面的资源,进行一个钓鱼或污染。

https://pic2.zhimg.com/80/v2-4dccff8cabf3be5662d2aeb4a27f3c5d_1440w.jpgimage.png

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

我们总结了六大公有云的存储桶利用方式。

https://pic2.zhimg.com/80/v2-c3677355a26c3c8b3bc4d4b12d980d3d_1440w.jpgimage.png

12、Lambda函数执行命令

https://pic3.zhimg.com/80/v2-b2aca5feb5a5e48f15c36686f333355a_1440w.jpgimage.png

首先我们先创建一个Lambda函数,然后在选择触发器的时候选择我们创建的存储桶,并且触发事件,我们选择所有事件都会触发。

https://pic3.zhimg.com/80/v2-ff6ce88a27bc5fc072d01c765be319e2_1440w.jpgimage.png

我们使用Python编写函数,首先我们使用print将event中的信息输出到Cloud Watch我们需要注意Object中的Key,假设一种情况,这里的KEY来自存储桶的文件名,如果管理员在编写代码时将文件夹当成命令或其他的方式进行处理,能否造成命令执行。

https://pic2.zhimg.com/80/v2-dbfb2a0688be6448a708e138436d6f21_1440w.jpgimage.png

很显然,是可以的,并且我们可以使用curl命令将信息外带出来。

https://pic3.zhimg.com/80/v2-4f6a12bcdff0873e27dceb521f64f3fa_1440w.jpgimage.png

在本环节中,我们挑选了,在火线安全众测项目中,漏洞奖金比较高的一些漏洞进行举例。

1、反编译小程序泄露AccessKey

https://pic3.zhimg.com/80/v2-614d48ca520ef6a4e93a9f51d8dcba86_1440w.jpgimage.png

该漏洞的奖金为6500,我们在图片中的IDEA中可以看到,这里通过ABD获取小程序的包反编译后在JS代码中找到的存储桶的KEY,随后连接上去,在存储桶中获取到了大量的敏感数据。

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

https://pic4.zhimg.com/80/v2-5a0411ac158e77542824d158923eaebf_1440w.jpgimage.png

该漏洞的奖金为7000,在上图中可以看到,在JS代码中,找到了泄露的KEY,随后使用OSS浏览器连接上去,发现了大量的用户身份证图片等。

3、阿里云存储桶劫持

https://pic1.zhimg.com/80/v2-8ffaf52f634c501da9bf1422e3df5fe4_1440w.jpgimage.png

该漏洞的奖金为2500,在第二张图我们可以看到,访问域名显示NoSuckBucket,在HostID中我们可以看到存储桶的域名,随后创建了一个跟这个名称一样的存储桶,并上传一个1.txt中包含test by huoxian,再次访问该域名可以发现成功劫持了该域名。

4、GitHubAccessKey泄露

https://pic1.zhimg.com/80/v2-c01488294f4d1b0e47afadba728ee830_1440w.jpgimage.png

在上图中我们可以看到,通过关键字的搜索,可以在github中发现上传的AK,导致泄露敏感信息。

相关文章
|
4月前
|
存储 监控 安全
云存储的安全性:保护你的数据的技术探索
【8月更文挑战第8天】云存储的安全性是保障用户数据安全的重要基础。通过数据加密、访问控制、多副本备份、网络安全和物理安全等多种技术手段,云存储服务提供商能够为用户提供安全可靠的存储服务。然而,用户也需要加强自身的安全意识和管理措施,共同维护云存储环境的安全稳定。
|
4月前
|
安全 Nacos 数据库
【技术安全大揭秘】Nacos暴露公网后被非法访问?!6大安全加固秘籍,手把手教你如何保护数据库免遭恶意篡改,打造坚不可摧的微服务注册与配置中心!从限制公网访问到启用访问控制,全方位解析如何构建安全防护体系,让您从此告别数据安全风险!
【8月更文挑战第15天】Nacos是一款广受好评的微服务注册与配置中心,但其公网暴露可能引发数据库被非法访问甚至篡改的安全隐患。本文剖析此问题并提供解决方案,包括限制公网访问、启用HTTPS、加强数据库安全、配置访问控制及监控等,帮助开发者确保服务安全稳定运行。
450 0
|
7月前
|
监控 安全 网络安全
云端防御:在云计算时代确保数据安全与网络完整性
【5月更文挑战第18天】 随着企业逐渐将关键业务迁移至云平台,云计算服务的安全性成为不容忽视的核心议题。本文旨在探讨当前云计算环境下的网络安全挑战与信息保护策略。文章分析了云服务中存在的安全漏洞,提出了一系列针对性的安全措施,包括加密技术、访问控制和持续监控等,并讨论了如何通过综合安全框架来强化整体防护机制。此外,文中还强调了教育和员工意识提升在维护网络安全中的重要性。
|
7月前
|
存储 监控 安全
云端防御策略:确保云服务中的数据安全与完整性
【5月更文挑战第18天】 随着企业纷纷迁移至云计算平台,数据的安全性和完整性变得尤为重要。本文深入探讨了在动态且共享的云环境中维护网络安全的挑战,并提出了一系列创新的防御措施。从加密技术到身份验证,再到入侵检测系统,我们分析了多种技术如何共同作用以增强云服务的安全。此外,文中还讨论了合规性、审计及持续监控的重要性,并强调了教育和员工意识在维护信息安全中的作用。通过采用多层次、多角度的安全策略,我们可以为云服务构建一个更为坚固的防御体系。
|
7月前
|
云安全 安全 网络安全
我的游戏服务器被攻击了怎么办,有什么方案解决?
游戏行业目前是攻击的重灾区,DDoS攻击的主要目标之一。每当遭受攻击,都会带来游戏不可用,而攻击者经常会勒索金钱,这样带来双重损失。 最要命的是在新游戏发布、游戏活动时间、以及节假日游戏收入旺季时段遭受DDoS攻击导致游戏公司损失更加明显。 最主要的还是会影响玩家的游戏体验,造成用户流失,直接缩短游戏的生命周期。
|
7月前
|
SQL 安全 网络安全
服务器入侵如何防护,业务被攻击如何处理,服务器安全防护方案
服务器入侵如何防护,业务被攻击如何处理,服务器安全防护方案
|
云安全 存储 安全
构建强大的云安全基础:认证、加密与网络防护
本篇深入剖析了云安全的基础要素,重点探讨了认证、授权与访问控制、数据加密与隐私保护,以及网络与防火墙配置等关键主题。我们首先介绍了身份验证与单一登录(SSO)的重要性,并提供了使用Flask进行SSO的示例代码。随后,我们强调了角色与权限管理在保障资源安全上的作用,还介绍了云供应商提供的访问控制工具。
155 1
|
云安全 安全 网络安全
相比快照备份,云安全中心防勒索解决方案有哪些优势?
相比快照备份,云安全中心防勒索解决方案有哪些优势?
300 0
|
存储 安全 容灾
语音直播系统,提升云存储安全性的必要手段
语音直播系统,提升云存储安全性的必要手段
|
弹性计算 安全 JavaScript
【最佳实践】用户Bucket如何防御DDOS攻击?
第一章:OSS沙箱说明   阿里云OSS不承担网络攻击的防护义务。如果用户的Bucket正在遭受攻击或者有受攻击的风险,OSS会自动将被攻击的Bucket切入到沙箱。沙箱中的Bucket仍然可以正常响应请求,但是用户有可能明显感受到该Bucket服务质量的下降。