红队视角下的公有云基础组件安全(公有云基础设施归谁所有)

红队视角下的公有云基础组件安全前言
“公有云是为广大用户、个人或企业提供的云基础设施。公有云就是第三方公有云供应商为用户提供可通过互联网访问的虚拟环境中的服务器空间。然后,用户可以通过购买云服务器、数据存储和其他与云相关的服

它直接兼容签名URL格式或S3协议,并提供下载、上传和管理API。具体参数含义如下。

AK用于控制用户权限

Sign用于验证签名。云供应商通常会结合AK、域、URI、查询、标头、其他请求特征、ID 特征和时间戳,并使用SK 作为哈希中的盐值来生成最终的Sgin。该数据包用于检查其是否合法。

time 是时间戳,即该URL 的用户ID 的到期日期。

上传风险

如果你查看相关文档,你会发现通过表单实现上传文件到OSS有3种方式。

1. 在客户端使用JavaScript代码完成签名,并通过表单将数据直接传输到OSS。

2. 在服务器端完成签名,并通过表单将数据直接传输到OSS。

3. 在服务器上完成签名,在服务器上设置上传后回调,通过表单将数据直接传输到OSS。当OSS回调完成后,将应用服务器的响应结果返回给客户端。

密钥泄漏

对象存储SDK通常包括JavaScript SDK,这是一个支持用户前端上传的组件。

https://github.com/ali-sdk/ali-oss

一般来说,在安全配置下,前端上传是使用子用户或临时密钥(STS token)进行的,但由于开发松散,前端js和APK文件都是硬编码的。

SK的情况依然普遍。一般只需在burpsuite中搜索对应的云AK名称即可,如AccessKey、SecretKey等。

![照片](https://img-

blog.csdnimg.cn/img_convert/5d0649f3719220def0b7c4ac880bdccd.png)

一旦你拥有了AccessKey和SecretKey,你就可以完全控制你的OSS,包括使用官网提供的API和开源工具来管理它。

覆盖任何文件

在某些业务场景中,可能存在以下流程:

1. 首先,根据时间戳生成随机文件名。

2、通过该文件名信息获取后端的文件上传签名。

3.最后通过PUT或POST上传

![照片](https://img-

blog.csdnimg.cn/img_convert/7c26beb31e34172e225914db5e844340.png)

目前,上传路径在我们的控制之下,因此我们可以通过更改签名路径并覆盖此存储桶中的文件来对其进行签名。

![照片](https://img-

blog.csdnimg.cn/img_convert/d890a11c485cdc8557e8d898a96fc215.png)

![照片](https://img-

blog.csdnimg.cn/img_convert/ab7ac60ada3c04555375d3e05be7a540.png)

可以看到新文件已经成功上传并覆盖了原文件。

一旦达到文件覆盖,存储桶中的原始资源可能会被修改,从而可能引入XSS风险,严重时甚至会引发供应链中毒攻击。

1XSS 风险

文件覆盖条件成立后,我们首先假设一个场景,某公司主站所有静态js文件都放在OSS云存储中,结合CDN进行加速。您现在应该知道js 文件的路径和名称。然后您可以将其附加到原始文件中。 将恶意js代码注入js并覆盖文件甚至会导致XSS和长期的信息窃取。

2 供应链污染

想象一下这样的场景:文件覆盖条件成立后,将软件/源代码上传到OSS进行分发,公司节省了服务器带宽。不正确的配置会导致文件被覆盖。将恶意代码注入到被覆盖的软件或源代码中。

上传任意文件

一些公共云供应商设置了默认设置以防止覆盖现有文件。在这种情况下,无法覆盖文件,但您可以控制文件的密钥并上传任何文件。

![照片](https://img-

blog.csdnimg.cn/img_convert/04788b38742fd08f688603d56a3e40c8.png)

一般来说,国内主要云厂商的OSS都支持HTML解析。当OSS配置了企业域名时,上传文件相当于控制XSS和可用于XSS的子域名的权限。网络钓鱼。

![照片](https://img-

blog.csdnimg.cn/img_convert/cb302763d15fddffdf6010c399e959da.png)

![照片](https://img-

blog.csdnimg.cn/img_convert/1093e75c8706a67b4aa0fc476db217d3.png)

上传时,将文件路径从上传改为攻击,即可获取本次上传的STS(Security Token)。

service),拿得到的STS上传,更改key(文件名),就可以上传任意文件/任意目录。

![照片](https://img-

blog.csdnimg.cn/img_convert/2a6ef067a0ba7f6ea6f0714a5f44c863.png)

![照片](https://img-

blog.csdnimg.cn/img_convert/71600d79f3449145a48633b067050f3e.jpeg)

STS代币

由于前端是使用SDK上传的,所以很多开发者总是选择前端上传,因为它减少了很多前后端交互API的创建,并且要求云厂商使用STS(Security Token)进行开发。

Service)模式下的STS概述如下:

![照片](https://img-

blog.csdnimg.cn/img_convert/b42cdd7140a2219a67d91b964aca90e1.png)

因为STS

token是针对API接口的,并不是更广泛的云产品,返回AK、SK、STS后,可能会限制上传,只允许上传特定目录下的文件。 STS访问ECS、负载均衡等支持STS的服务。

对于S3标准的STS,也可以通过BASE64解码来获取相应的权限。

PUT ACL 接管存储桶

这是云供应商对PUT ACL 的说明。

![照片](https://img-

blog.csdnimg.cn/img_convert/aeb98f7c1aa51c10ea2f153e20072f1d.png)

原始ACL可能会被覆盖,如果配置不正确,可能会导致某些安全问题。

如果前端请求签名,前端上传,后端对路径没有限制,可以要求SDK获取根目录的写权限,并使用PUT。使用ACL 覆盖。

GET /get_put_sgin?uri=/HTTP/1.1

主机: 192.168.20.31:80

接受:/

接受语言: en

User-Agent: Mozilla/5.0(兼容性;MSIE 9.0;Windows NT 6.1;Win64;x64;

三叉戟/5.0)

关闭连接:

详细参见文档:

使用https://cloud.tencent.com/document/product/436/7737将ACL写入根目录,但注意是PUT。

写入存储桶属于覆盖操作,会覆盖原有业务的ACL,导致业务无法访问该存储桶,导致业务中断。因此,如果发现这个问题,不要急于测试。

下载时的安全问题

对象存储如何保证存储文件的安全性?私有读桶需要授权签名才能读取文件。一旦签名过期,您每次阅读图像时都需要请求许可。常用的接口有:

GET /download?uri=文件HTTP/1.1

主机: 192.168.20.31

接受:/

接受语言: zh

User-Agent: Mozilla/5.0(兼容性;MSIE 9.0;Windows NT 6.1;Win64;x64;

三叉戟/5.0)

关闭连接:

发送此请求将返回带有参数的URL,例如,如果URL 设置为空。

GET /download?uri=HTTP/1.1

主机: 192.168.20.31

接受:/

接受语言: zh

User-Agent: Mozilla/5.0(兼容性;MSIE 9.0;Windows NT 6.1;Win64;x64;

三叉戟/5.0)

关闭连接:

然后访问对象存储管理节点信息,检索整个存储桶的文件信息,并使用检索到的密钥建立访问链接,进行存储桶的文件遍历。

MinIO安全问题

目前有许多资源服务器可供使用,包括FastDFS、MinIO 和AWS/S3。出于数据安全的考虑,云服务器提供商也可能选择使用MinIO 来构建内部OSS。服务。

数据泄露

简单来说,如果你想提供持久化的资源下载链接,你必须将bucket的BP设置为ReadWrite。

http://使用minio_out_url/bucket_path/时

当您访问它时,您将获得一个非常大的XML,在其中您将看到如下内容:关键字段是文件名。

![照片](https://img-

blog.csdnimg.cn/img_convert/3c23427220864ad4c6f1fe50040df84c.png)

MinIO存储桶有一个listObjects函数,默认最大记录数为1,000。这意味着,如果您开启永久下载链接模式,任何人都可以检索您通过您的存储桶路径保存的所有资源的信息,从而导致存储桶遍历。

CVE-2021-21287

请参阅PHITHON 文章。这里我就不介绍了。

云计算

云服务器

目前公有云基本上都支持使用自定义镜像,镜像导入的方式基本都是使用对象存储,输入oss-key。

一旦您指定地址,公共云服务就会下载并导入它。因此,您可以考虑劫持用于导入镜像的OSS存储桶,直接污染镜像来进行“供应链攻击”。

![照片](https://img-

blog.csdnimg.cn/img_convert/e53ed4186ae10a686a08efb6220764f9.png)

![照片](https://img-

blog.csdnimg.cn/img_convert/5d60b01e05a745da99690ef1516173cd.png)

![照片](https://img-

blog.csdnimg.cn/img_convert/926177ca87b0f04d60ce0152ea3c45da.png)

此外,一些公有云还支持在其他服务器上创建的镜像,使得新服务器与原始服务器完全相同。从攻击者的角度来看,相同的系统环境和应用程序意味着相同的攻击方法。

![照片](https://img-

blog.csdnimg.cn/img_convert/7f6ba59a449359f3a1df9e5b22bede67.png)

批量计算

一些公共云供应商提供批量计算服务。该服务只需要设置参数即可调用服务器资源进行计算。

控制输入和输出参数。从攻击者的角度来看,如果他们能够控制oss-bucket,就像上面提到的服务镜像一样,他们就可以直接控制批量计算服务命令之类的东西。

![照片](https://img-

blog.csdnimg.cn/img_convert/5941a0a20b926ef2832abcbcea36a2b9.png)

![照片](https://img-

blog.csdnimg.cn/img_convert/a95e9d522b8036668137c0875e07b6ab.png)

容器集群

不同公有云的容器集群服务存在显着差异。

阿里云提供了五种不同版本的集群来满足不同的需求:ACK托管版本、ACK专有版本、ASK集群、ACK边缘托管版本、注册集群等。

腾讯云将资源类型分为TKE容器集群、EKS弹性容器集群和边缘集群。

华为云分为容器引擎CCE和实例CCI。

每个厂商的容器服务都不同,因此从攻击者的角度来看,使用特定厂商容器服务的攻击需要特殊处理。

容器集群服务

敏感目录已挂载

某些厂商在创建容器集群服务时提供了更改容器存储路径的接口。

![照片](https://img-

blog.csdnimg.cn/img_convert/32aa829a2bcd683b38474e3298003b38.png)

如果一个运维工程师将其更改为/root,并且新容器的另一个运维工程师将/root挂在该容器上,则该节点上的所有容器都将受到控制。

再生过程

创建集群时将容器目录更改为/docker。

![照片](https://img-

blog.csdnimg.cn/img_convert/abf990f00292418f59816ae75f3aeff3.png)

启用外部网络访问

![照片](https://img-

blog.csdnimg.cn/img_convert/85533ecfa9ca8dd7d946f0e60956a7a8.png)

创建一个新的pod 并挂载/docker 目录。

![照片](https://img-

blog.csdnimg.cn/img_convert/b96cf09fff6174a0e1396394968a1177.png)

进入pod内的/mount/docker目录并控制所有容器。

![照片](https://img-

blog.csdnimg.cn/img_convert/3bc5ff15e2a6ad2cb6de7137baf478ae.png)

所有节点使用相同的kube-config

所有节点都使用相同的kube-config,并且所有节点都具有k8s master 权限。如果您的容器存在逃逸问题,您可以从任何节点控制整个k8s 集群。

有了云厂商的k8s配置,未授权的组件授权等问题就自动解决了,但是如果容器或者/root/.kube/config发生了逃逸,那么docker用户被逃逸的问题就无法避免了。

如果泄露,它可能会控制整个容器集群。

下面展示了挂载/root并控制整个集群的过程。

创建一个新的pod 并挂载root

![照片](https://img-

blog.csdnimg.cn/img_convert/972cb5af17826af6f32aeea23e0deec0.png)

获取kube 配置

![照片](https://img-

blog.csdnimg.cn/img_convert/e2ecb3e4dd83f972e7eb3f2ca1c72666.png)

上传kubectl来控制整个集群

![照片](https://img-

blog.csdnimg.cn/img_convert/1c2f0edd061698766970c7fe925ec9f8.png)

容器镜像服务

所有提供容器服务的公有云也都提供容器镜像服务。

存储劫持

为了方便操作,一些云厂商在创建镜像仓库时直接使用对象存储,自动创建桶,将镜像资源存储在对象存储中。目前镜像服务代表的是中间件,是经过封装的。

使用SDK,所有对图片的操作就和调用SDK操作OSS一样。

![照片](https://img-

blog.csdnimg.cn/img_convert/a0f89e32329390b02b538b983a9b4db8.png)

桶默认为私有读/写,如果配置为公共读/写/公共读,还可以读取/控制镜像仓库。

控制桶与控制镜像仓库相同。您可以恢复源并让镜像仓库控制服务器SSRF。

令牌泄露

大多数云供应商使用两种身份验证方法登录仓库:永久访问凭据或临时访问凭据。

一旦访问凭证被泄露,就可以对仓库进行添加、删除、修改和检查,从而完成“供应链攻击”。

中间件

为应用程序提供通用服务和功能的软件。数据管理、应用程序服务、消息传递、身份验证和API 管理通常通过中间件进行。这里的中间件只描述API网关和消息队列的内容。

消息队列

目前主流的消息队列有RocketMQ、Kafka、Pulsar、RabbitMQ等。

RocketMQ 是阿里巴巴开发的低延迟、可靠、可扩展、易用的消息中间件。

Kafka 是LinkedIn 开发的高吞吐量分布式消息系统。开发目标是提供一个高吞吐量、低延迟的集成平台来处理实时数据。

Pulsar 是Yahoo 开发的Pub-Sub 模式分布式消息平台,于2016 年开源,并于2018 年9 月毕业为Apache。

基金会顶点项目。

RabbitMQ 是一个基于高级消息队列协议的消息系统,其服务器端采用Erlang 语言编写,支持Python、NET、PHP、

Java、JMS 等

一些云厂商要求消费者在开始订阅常规消息时设置相关参数。其中包括AccessKey等云认证参数,一定要注意防止泄露。

![照片](https://img-

blog.csdnimg.cn/img_convert/4c38f4bebe62bea06875e4d7e7052911.png)

一家云供应商的应用程序指定在准备和配置阶段使用Log4j。请注意这里。

![照片](https://img-

blog.csdnimg.cn/img_convert/a3ef1cbe1c1e62d3653eb157e98a62fb.png)

滚动键

某些产品中的消息队列需要配置角色,该密钥用于在建立每个角色时对管理员进行身份验证。该角色的密钥可能会受到损害。绑定到该角色的队列数据。

要激活消息队列,访问点会在您创建新集群时出现。

![照片](https://img-

blog.csdnimg.cn/img_convert/d988a06e8a269d6cade6294be0673d6e.png)

在那里创建一个新的名称空间并创建一个新主题

![照片](https://img-

blog.csdnimg.cn/img_convert/718afbbba515b15495dbc0d4396d76de.png)

在为空间配置权限之前,您必须创建新角色。

![照片](https://img-

blog.csdnimg.cn/img_convert/25beecc2e65ab6914773c0d096cc19d2.png)

权限是在创建角色时配置的

![照片](https://img-

blog.csdnimg.cn/img_convert/bf1c1872559ee3903e9f177173f1dd3d.png)

消息队列中的每个集群都可以建立多个命令空间,并且可以选择将访问地址暴露到公网,但开放后无法关闭。

每个空间必须绑定一个角色,一个角色可以绑定多个空间。如果该角色的密钥被泄露,则可以读取所有空间的队列数据。

API网关

API网关聚合了各个系统对外提供的微服务。所有调用这些服务的请求都必须通过API。

这种方式可以让网关集中管理和控制鉴权、鉴权、流控、协议转换、监控等API。

认证

不当的API认证设置会导致任意用户调用相关API。

关API

API创建的时候,会有鉴权的类型选择,如果不选默认为免认证,意味着谁都可以调用

![图片](https://img-
blog.csdnimg.cn/img_convert/e885a5601e555879b9cab76d5f278576.png)

鉴权选择应用认证,这个涉及到调用API的凭证,密钥类似于登录密码,密钥泄露他人可以任意调用API

应用密钥也是一种签名方式,可以对请求内容签名计算

![图片](https://img-
blog.csdnimg.cn/img_convert/6f1fad7dd29e95b1c6663dd5719849e9.png)

鉴权为密钥对是只有使用正确密钥发起的访问才能够通过API网关的校验,不携带或者错误都不能通过鉴权,这种方式是历史功能官方会提示不建议使用,密钥的泄露一样会造成任意调用

![图片](https://img-
blog.csdnimg.cn/img_convert/35a7980e764f4800700fa143c359b667.png)

云原生网关

某厂商有个产品叫云原生网关是基于Kong网关的,我们可以借助这个达到隐藏ip的目的。

![图片](https://img-
blog.csdnimg.cn/img_convert/a4ad3801aae34819d2c0e062895e7a00.png)

利用的前提是需要开通云原生网关(目前白嫖)、并且有一台和网关属于同一个地区、同一VPC下的云服务器

![图片](https://img-
blog.csdnimg.cn/img_convert/d20477fc590779baabfbceb6fb7b2a98.png)

通过配置安全组添加规则放通VPC的网段10.0.0.0/8 、192.168.0.0/16、172.16.0.0/12三个VPC内网网段

![图片](https://img-
blog.csdnimg.cn/img_convert/521c3aec32384deebb8136cc9b1eaf74.png)

访问创建的云原生网关可以看到网关的详细信息包括Kong 管理控制台的地址和管理员账号、密码

![图片](https://img-
blog.csdnimg.cn/img_convert/c2b0ebb9f021a822ccfa92907d739f8a.png)

第一次进入需要启用连接,使用默认的就好

![图片](https://img-
blog.csdnimg.cn/img_convert/09fe8a6f336cffe154bbb1a034b3a966.png)

在左侧进入服务列表并新建一个服务,创建时在url中填写云服务器在VPC的地址

![图片](https://img-
blog.csdnimg.cn/img_convert/b7c3fc594343cf9002402efa7159fec3.png)

创建成功点击服务进入详情创建一个路由,在Paths中填写/,回车确定,然后点击最下面的提交

![图片](https://img-
blog.csdnimg.cn/img_convert/ba95f8b69943e397ce023fd56b1c7dfb.png)

cs马配置为kong提供的公网代理地址,需要使用无阶段的马

![图片](https://img-
blog.csdnimg.cn/img_convert/cf036c2dd5941bd71ba8c0051633a246.png)

目标成功通过kong上线

![图片](https://img-
blog.csdnimg.cn/img_convert/fd574bf646133182555025fdd8cdef64.png)

总结

根据以上分析,本文涉及到的公有云基础组件安全风险总结如下:

从 云存储 角度看,包括访问控制风险,文件上传中的密钥泄露、任意文件覆盖风险,STS Token的未授权访问风险,PUT ACL接管存储桶配置不当,以及文件下载、MinIO等资源服务器也容易出现安全问题。
从 云计算 角度看,云服务器易出现镜像污染和因服务器环境相同带来连环攻击的风险;批量计算服务命令遭恶意控制等。
从 容器集群 角度看,容器集群服务易发生敏感目录被挂载的情况;容器镜像服务存在存储劫持、Token泄露等风险。
从 中间件 角度看,消息队列可能存在角色密钥、云身份验证参数泄露等问题;API网关存在鉴权配置不当引起恶意调用、密钥泄露风险,云原生网关权限泄露等问题。

网络安全工程师(白帽子)企业级学习路线

第一阶段:安全基础(入门)

![img](https://img-
blog.csdnimg.cn/img_convert/4190db0da74948e7cdcdc9f32f56a1aa.png)

第二阶段:Web渗透(初级网安工程师)

![img](https://img-
blog.csdnimg.cn/img_convert/5efc4a4dcd2b9bb8804fc9f02eea0bfe.png)

第三阶段:进阶部分(中级网络安全工程师)

![img](https://img-
blog.csdnimg.cn/img_convert/a9b21c76de32a4f9756f1bbc036d9b2f.png)

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉[网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!](https://mp.weixin.qq.com/s/BWb9OzaB-
gVGVpkm161PMw)

学习资源分享

![](https://img-
blog.csdnimg.cn/img_convert/bb7a3ae43af66a6d64bf763db979aead.jpeg)

学习计划安排

我一共划分了六个阶段,但并不是说你得学完全部才能上手工作,对于一些初级岗位,学到第三四个阶段就足矣~

这里我整合并且整理成了一份【282G】的网络安全从零基础入门到进阶资料包,需要的小伙伴可以扫描下方CSDN官方合作二维码免费领取哦,无偿分享!!!

如果你对网络安全入门感兴趣,那么你需要的话可以

点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

①网络安全学习路线
②上百份渗透测试电子书
③安全攻防357页笔记
④50份安全攻防面试指南
⑤安全红队渗透工具包
⑥HW护网行动经验总结
⑦100个漏洞实战案例
⑧安全大厂内部视频资源
⑨历年CTF夺旗赛题解析

#以上关于红队视角下的公有云基础组件安全的相关内容来源网络仅供参考,相关信息请以官方公告为准!

原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/91483.html

Like (0)
CSDN的头像CSDN
Previous 2024年6月22日
Next 2024年6月22日

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注