从pwnlabs学习云安全
字数 1984 2025-08-30 06:50:11
AWS云安全实战教学:从S3存储桶到RDS快照的渗透测试技术
1. 识别公共S3存储桶的AWS账户ID
1.1 场景概述
目标是通过公开的S3存储桶识别关联的AWS账户ID,这是云安全评估的常见起点。
1.2 技术要点
-
存储桶访问方式:
- 现代格式:
<桶名称>.s3.amazonaws.com(虚拟托管式) - 旧格式:
s3.amazonaws.com/<桶名称>/(路径式)
- 现代格式:
-
匿名访问检查:
aws s3 ls s3://mega-big-tech --no-sign-request --recursive -
账户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 技术要点
-
初始凭证验证:
aws sts get-caller-identity -
策略分析:
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 -
关键权限:
ec2:DescribeSnapshotAttributeec2:DescribeSnapshots
-
EBS快照利用:
aws ec2 describe-snapshots --owner-ids self --region us-east-1- 检查
createVolumePermission属性 - 公共快照可被任何AWS账户使用
- 检查
2.3 实战步骤
- 列出账户快照
- 检查快照权限设置
- 从公共快照创建EBS卷
- 创建EC2实例(确保与卷同可用区)
- 挂载卷并搜索敏感数据
mount /dev/xvdb1 /root/pwnedlabs/
3. 利用公共RDS快照进行渗透
3.1 场景概述
通过AWS账户ID查找并利用公共RDS数据库快照。
3.2 技术要点
-
AWS快照类型:
- EBS快照:备份块存储卷
- RDS快照:备份关系型数据库
- Aurora快照:备份Aurora数据库集群
- Redshift快照:备份数据仓库
- FSx快照:备份文件系统
-
RDS快照利用:
- 还原公共快照为新数据库实例
- 配置VPC和公开访问
- 创建EC2实例进行连接
-
数据库访问:
psql -h <endpoint> -U postgres \l # 列出数据库 \c <数据库名> # 使用数据库 \dt # 列出数据表
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 技术要点
-
服务枚举:
aws-enumerator enum -services all aws-enumerator dump -services SQS,LAMBDA,STS -
Lambda函数分析:
aws lambda list-functions aws lambda get-function --function-name huge-logistics-stock -
SQS消息处理:
aws sqs list-queues aws sqs receive-message --queue-url <URL> --message-attribute-names All -
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存储桶枚举到复杂云环境渗透的关键技术。实际应用中,请确保获得合法授权并遵守道德准则。