从pwnlabs学习云安全
字数 1984 2025-08-30 06:50:11

AWS云安全实战教学:从S3存储桶到RDS快照的渗透测试技术

1. 识别公共S3存储桶的AWS账户ID

1.1 场景概述

目标是通过公开的S3存储桶识别关联的AWS账户ID,这是云安全评估的常见起点。

1.2 技术要点

  1. 存储桶访问方式

    • 现代格式:<桶名称>.s3.amazonaws.com(虚拟托管式)
    • 旧格式:s3.amazonaws.com/<桶名称>/(路径式)
  2. 匿名访问检查

    aws s3 ls s3://mega-big-tech --no-sign-request --recursive
    
  3. 账户ID枚举工具

    • 使用s3-account-search工具
    • 需要具有s3:GetObjects3:ListBucket权限的角色ARN
    • 示例ARN:arn:aws:iam::427648302155:role/LeakyBucket
  4. 自定义角色创建

    • 创建IAM用户并附加策略
    • 策略需包含对目标存储桶的访问权限
    • 建立信任关系

1.3 实战步骤

  1. 识别存储桶名称(如mega-big-tech
  2. 验证匿名访问权限
  3. 使用工具或自定义角色枚举账户ID
  4. 等待爆破完成获取目标AWS账户ID

2. 利用公共EBS快照提升权限

2.1 场景概述

从基础凭证开始,通过分析公共EBS快照获取更高权限。

2.2 技术要点

  1. 初始凭证验证

    aws sts get-caller-identity
    
  2. 策略分析

    aws iam list-attached-user-policies --user-name intern
    aws iam get-policy --policy-arn arn:aws:iam::104506445608:policy/PublicSnapper
    aws iam get-policy-version --policy-arn arn:aws:iam::104506445608:policy/PublicSnapper --version-id v9
    
  3. 关键权限

    • ec2:DescribeSnapshotAttribute
    • ec2:DescribeSnapshots
  4. EBS快照利用

    aws ec2 describe-snapshots --owner-ids self --region us-east-1
    
    • 检查createVolumePermission属性
    • 公共快照可被任何AWS账户使用

2.3 实战步骤

  1. 列出账户快照
  2. 检查快照权限设置
  3. 从公共快照创建EBS卷
  4. 创建EC2实例(确保与卷同可用区)
  5. 挂载卷并搜索敏感数据
    mount /dev/xvdb1 /root/pwnedlabs/
    

3. 利用公共RDS快照进行渗透

3.1 场景概述

通过AWS账户ID查找并利用公共RDS数据库快照。

3.2 技术要点

  1. AWS快照类型

    • EBS快照:备份块存储卷
    • RDS快照:备份关系型数据库
    • Aurora快照:备份Aurora数据库集群
    • Redshift快照:备份数据仓库
    • FSx快照:备份文件系统
  2. RDS快照利用

    • 还原公共快照为新数据库实例
    • 配置VPC和公开访问
    • 创建EC2实例进行连接
  3. 数据库访问

    psql -h <endpoint> -U postgres
    \l  # 列出数据库
    \c <数据库名>  # 使用数据库
    \dt  # 列出数据表
    

3.3 实战步骤

  1. 搜索目标账户的公共RDS快照
  2. 还原快照为新数据库实例
  3. 设置网络配置(VPC、公开访问)
  4. 创建EC2实例并安装客户端工具
  5. 连接数据库并提取敏感信息

4. S3存储桶枚举基础

4.1 场景概述

通过分析网站加载的S3资源进行存储桶枚举和数据提取。

4.2 技术要点

  1. 存储桶访问模式识别

    • 区分虚拟托管式和路径式访问
  2. 目录遍历

    • 匿名访问sharedstatic目录
    • 下载并分析zip文件中的脚本
  3. 权限提升

    • 从脚本中发现AK/SK
    • 使用新凭证访问受限目录(如admin
    • 通过export.xml文件获取更高权限凭证

4.3 实战步骤

  1. 识别存储桶访问模式
  2. 尝试匿名访问不同目录
  3. 分析下载文件中的敏感信息
  4. 使用发现的凭证提升权限
  5. 访问受限文件获取flag

5. SQS和Lambda的SQL注入

5.1 场景概述

通过硬编码凭证发现SQS和Lambda服务,利用二次注入漏洞。

5.2 技术要点

  1. 服务枚举

    aws-enumerator enum -services all
    aws-enumerator dump -services SQS,LAMBDA,STS
    
  2. Lambda函数分析

    aws lambda list-functions
    aws lambda get-function --function-name huge-logistics-stock
    
  3. SQS消息处理

    aws sqs list-queues
    aws sqs receive-message --queue-url <URL> --message-attribute-names All
    
  4. SQL注入利用

    • 通过clientName参数触发二次注入
    • 使用特殊字符(如")引发错误
    • 构造UNION查询获取数据

5.3 实战步骤

  1. 枚举可用服务和权限
  2. 分析Lambda函数和SQS队列
  3. 发送测试消息观察响应
  4. 构造恶意消息触发SQL注入
  5. 利用注入漏洞提取数据库信息

6. AWS服务架构与安全要点

6.1 服务交互架构

  • 典型流程:API网关 → SQS → Lambda → DB
  • 优势:可扩展性、容错性
  • 风险点:消息队列中的恶意输入可能导致二次注入

6.2 安全最佳实践

  1. 存储桶安全

    • 禁用匿名访问
    • 使用最小权限原则
    • 启用日志记录和监控
  2. 快照安全

    • 避免设置公共快照
    • 使用加密快照
    • 定期审计快照权限
  3. Lambda安全

    • 输入验证和参数化查询
    • 最小权限执行角色
    • 禁用未使用的函数
  4. 凭证安全

    • 避免硬编码凭证
    • 使用临时凭证
    • 定期轮换密钥

7. 总结与进阶方向

7.1 渗透测试流程总结

  1. 信息收集(存储桶、账户ID)
  2. 凭证分析与权限提升
  3. 服务枚举与漏洞利用
  4. 数据提取与横向移动

7.2 进阶研究方向

  1. 跨账户攻击:利用组织内的信任关系
  2. 角色假设:分析并利用过度宽松的角色信任策略
  3. 云特定漏洞:如服务器端请求伪造(SSRF)获取元数据
  4. 日志分析:通过CloudTrail日志发现异常活动

通过本教学文档,您已掌握从基础S3存储桶枚举到复杂云环境渗透的关键技术。实际应用中,请确保获得合法授权并遵守道德准则。

AWS云安全实战教学:从S3存储桶到RDS快照的渗透测试技术 1. 识别公共S3存储桶的AWS账户ID 1.1 场景概述 目标是通过公开的S3存储桶识别关联的AWS账户ID,这是云安全评估的常见起点。 1.2 技术要点 存储桶访问方式 : 现代格式: <桶名称>.s3.amazonaws.com (虚拟托管式) 旧格式: s3.amazonaws.com/<桶名称>/ (路径式) 匿名访问检查 : 账户ID枚举工具 : 使用 s3-account-search 工具 需要具有 s3:GetObject 或 s3:ListBucket 权限的角色ARN 示例ARN: arn:aws:iam::427648302155:role/LeakyBucket 自定义角色创建 : 创建IAM用户并附加策略 策略需包含对目标存储桶的访问权限 建立信任关系 1.3 实战步骤 识别存储桶名称(如 mega-big-tech ) 验证匿名访问权限 使用工具或自定义角色枚举账户ID 等待爆破完成获取目标AWS账户ID 2. 利用公共EBS快照提升权限 2.1 场景概述 从基础凭证开始,通过分析公共EBS快照获取更高权限。 2.2 技术要点 初始凭证验证 : 策略分析 : 关键权限 : ec2:DescribeSnapshotAttribute ec2:DescribeSnapshots EBS快照利用 : 检查 createVolumePermission 属性 公共快照可被任何AWS账户使用 2.3 实战步骤 列出账户快照 检查快照权限设置 从公共快照创建EBS卷 创建EC2实例(确保与卷同可用区) 挂载卷并搜索敏感数据 3. 利用公共RDS快照进行渗透 3.1 场景概述 通过AWS账户ID查找并利用公共RDS数据库快照。 3.2 技术要点 AWS快照类型 : EBS快照:备份块存储卷 RDS快照:备份关系型数据库 Aurora快照:备份Aurora数据库集群 Redshift快照:备份数据仓库 FSx快照:备份文件系统 RDS快照利用 : 还原公共快照为新数据库实例 配置VPC和公开访问 创建EC2实例进行连接 数据库访问 : 3.3 实战步骤 搜索目标账户的公共RDS快照 还原快照为新数据库实例 设置网络配置(VPC、公开访问) 创建EC2实例并安装客户端工具 连接数据库并提取敏感信息 4. S3存储桶枚举基础 4.1 场景概述 通过分析网站加载的S3资源进行存储桶枚举和数据提取。 4.2 技术要点 存储桶访问模式识别 : 区分虚拟托管式和路径式访问 目录遍历 : 匿名访问 shared 和 static 目录 下载并分析zip文件中的脚本 权限提升 : 从脚本中发现AK/SK 使用新凭证访问受限目录(如 admin ) 通过 export.xml 文件获取更高权限凭证 4.3 实战步骤 识别存储桶访问模式 尝试匿名访问不同目录 分析下载文件中的敏感信息 使用发现的凭证提升权限 访问受限文件获取flag 5. SQS和Lambda的SQL注入 5.1 场景概述 通过硬编码凭证发现SQS和Lambda服务,利用二次注入漏洞。 5.2 技术要点 服务枚举 : Lambda函数分析 : SQS消息处理 : SQL注入利用 : 通过 clientName 参数触发二次注入 使用特殊字符(如 " )引发错误 构造UNION查询获取数据 5.3 实战步骤 枚举可用服务和权限 分析Lambda函数和SQS队列 发送测试消息观察响应 构造恶意消息触发SQL注入 利用注入漏洞提取数据库信息 6. AWS服务架构与安全要点 6.1 服务交互架构 典型流程 :API网关 → SQS → Lambda → DB 优势 :可扩展性、容错性 风险点 :消息队列中的恶意输入可能导致二次注入 6.2 安全最佳实践 存储桶安全 : 禁用匿名访问 使用最小权限原则 启用日志记录和监控 快照安全 : 避免设置公共快照 使用加密快照 定期审计快照权限 Lambda安全 : 输入验证和参数化查询 最小权限执行角色 禁用未使用的函数 凭证安全 : 避免硬编码凭证 使用临时凭证 定期轮换密钥 7. 总结与进阶方向 7.1 渗透测试流程总结 信息收集(存储桶、账户ID) 凭证分析与权限提升 服务枚举与漏洞利用 数据提取与横向移动 7.2 进阶研究方向 跨账户攻击 :利用组织内的信任关系 角色假设 :分析并利用过度宽松的角色信任策略 云特定漏洞 :如服务器端请求伪造(SSRF)获取元数据 日志分析 :通过CloudTrail日志发现异常活动 通过本教学文档,您已掌握从基础S3存储桶枚举到复杂云环境渗透的关键技术。实际应用中,请确保获得合法授权并遵守道德准则。