CD's second night

WIZ-2025竞标赛-第一期(June)

type
status
date
slug
summary
tags
category
icon
password
 

引入

WIZ 这个公司大家都不陌生 云原生安全巨头、云研究学习的殿堂。 每年都会赛博佛祖式的创建新的线上云CTF比赛,今年更是开展为期好几个月的竞标赛,笔者自然是不会落下任何一期,接下来研究一下这一期,主题为:Perimeter Leak
中译为:周边漏洞 由此可以猜测出攻击思路:边缘、绕过、提权、其实这也是云题目一贯的利用方式。
 
我们查看内容:
💡
经过数周的漏洞利用和权限提升,您已经获得了对最终服务器的访问权限,然后您可以使用该服务器从 S3 存储桶中提取密钥标志。
不过这并不容易。目标使用 AWS 数据边界来限制对存储桶内容的访问。
祝你好运!
您发现了一个在 AWS 上运行的 Spring Boot Actuator 应用程序:curl https://ctf:[email protected] {"状态":"正常"}
notion image
 
看到这里我们又能拿到两点:
  1. s3→可能是存储flag,当然肯定得进行一定凭据获取→权限提升
  1. Spring Boot → Spring Boot和云,头一件就会想到Spring Boot env泄露,里面存有key token 等等。(但是之前想看某大佬请教”Spring Boot 内存泄漏实战中难以预见,千里挑一,不过一旦遇到了 往往危害极深”) 所以伙伴们遇到Spring Boot还是一定不要放过它
 

研究

通过上面信息,我们已经有差不多的攻击思路。
首先我们的了解一些Spring Boot 的 Actuator 端点 (这个网上很多 点击左边加粗关键词查找)
我们直接看/actuator/env,输出有很多无用内容 主要关注下面几个
成功找到了S3地址 访问看看
💡
 
 
权限不够的话,看来我们得找Spring Boot 的 Actuator 端点了,半自动批量找一下看一下有哪些信息
/actuator/heapdump → 404
/heapdump → 404
/threaddump → 404
/mappings → 404 /actuator/mappings → 内容很对,以下是几个看起来有用的信息
proxy接口,参数url,显然是一个ssrf,前面我们又知道这个应用是在 EC2 上运行的,那么让我们自然就想到了ssrf→实例元数据服务
又是权限不够,摸索一下其他路径
后续MCP搜索AWS知识库 得到官方解释绕过方法
notion image
一个是版本绕过、一个是token利用。
 
 
再次分析一下信息 iam/ 用户配置信息 (curl访问后发现里面有security-credentials认证)
identity-credentials/ 认证
分别拿一下认证
分别有如下两个token 值也不一样。
/identity-credentials/ec2/security-credentials/ec2-instance
/iam/security-credentials/challenge01-5592368
aws config 认证一下token 我们分别查看一下他俩的权限区别
后面发现其实ec2-instance就是我们当前用户,不需要再进行测试。 我们直接拿challenge01-5592368-的token进行使用
有flag 但是测试发现无法权限:
查看一下存储桶策略:
notion image
这个策略的核心作用是:保护 private/ 文件夹。它拒绝所有来自公共互联网不被信任的网络位置的请求来下载该文件夹内的文件。只有通过一个特定的、内部的 AWS 网络通道 (VPC Endpoint) 发出的请求才被允许访问。
接下来我们能怎么做的下一步任务是: 找到一个方法,让我的 AWS 请求从这个特定的 VPC 端点发出。这通常意味着我需要:
  1. 找到一个位于与该 VPC 端点关联的 VPC 内的 EC2 实例。
  1. 想办法在该 EC2 实例上执行命令。(以满足)
  1. 或者找到其他可以从该 VPC 内发起请求的方式(例如,一个 Lambda 函数)。(题目没给)
还是没有权限,我们统计分析一下我们可能用到的信息:
  1. 所有对外的网络请求似乎都必须通过一个代理服务器:https://ctf:[email protected]/proxy
  1. EC2 实例所在的 VPC 有一个 "VPC 终端 (VPC Endpoint)" 连接到 S3
看来https://ctf:[email protected]/proxy vpc,结合这两点我们得想办法通过curl去利用https://ctf:[email protected]/proxy转发去连接s3
 
总结策略:
  1. 既然无法直接从 EC2 curl S3 的地址,那么就生成一个预签名 URL (Presigned URL)。
  1. 这个预签名 URL 包含了临时的访问凭证。
  1. 然后,通过那个代理 curl 这个预签名 URL。
  1. 因为 curl 命令是从 EC2 实例发出的,所以网络流量应该会智能地通过 VPC 终端路由到 S3。
💡
预签名 URL 是一种带有临时访问凭证的 URL,允许在限定时间内访问私有的 S3 对象,无需公开 AWS 凭证。您可以用它来授权下载(GET)或上传(PUT)操作 使用预签名 URL 共享对象 - Amazon Simple Storage Service
 
尝试从代理服务器查询它
URL 编码问题 , 需要将 内层URL (从 https:// 开始的整个S3地址) 进行完整的URL编码
OK flag 各位大佬们去收集一下吧
 
Loading...