skills/cloud/cloud-iam-audit/SKILL.md
云 IAM 权限审计与提权。当获取了云平台凭据(AWS AK/SK、Azure SPN、GCP SA、腾讯云 SecretId/SecretKey)需要评估权限范围和提权路径时使用。覆盖 AWS/Azure/GCP/腾讯云的 IAM/CAM 策略分析、常见提权路径(PassRole、AssumeRole、Lambda/SCF 提权)、跨账号攻击、CloudTrail/CloudAudit 规避。发现任何云凭据、AK/SK、SecretId/SecretKey 时都应使用此技能
npx skillsauth add wgpsec/AboutSecurity cloud-iam-auditInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
IAM/CAM 权限就是攻击面——一个过度授权的策略比一个 RCE 漏洞更危险。
| 凭据 | 格式 | 来源 |
|------|------|------|
| AWS AK/SK | AKIA... (20字符) | 配置文件、环境变量、元数据 |
| AWS 临时凭据 | ASIA... + SessionToken | IMDS、STS AssumeRole |
| Azure SPN | client_id + client_secret + tenant_id | 配置文件 |
| GCP SA Key | JSON 文件含 private_key | 服务账号密钥文件 |
| 腾讯云 SecretId/SecretKey | AKIDz... (36字符) / xxx= (Base64) | 配置文件、环境变量、元数据 |
| 腾讯云临时凭据 | SecretId/SecretKey + Token/ExpiredTime | 元数据、STS AssumeRole |
# AWS: 我是谁
aws sts get-caller-identity
# Azure
az account show
# GCP
gcloud auth list
# 腾讯云: 我是谁(优先使用 tccli)
tccli sts GetCallerIdentity
# 或使用 SDK
python3 -c "
from tencentcloud.sts.v20180813 import sts_client, models
from tencentcloud.common import credential
cred = credential.Credential('SecretId', 'SecretKey')
client = sts_client.StsClient(cred, 'ap-guangzhou')
print(client.GetCallerIdentity(models.GetCallerIdentityRequest()).to_json_string())
"
# 交互式配置 tccli(优先)
tccli configure
# 输入: SecretId, SecretKey, Region(如 ap-guangzhou), Output(json)
# 使用临时凭据时需额外设置 Token
tccli configure set token "TOKEN_VALUE"
# 也可通过环境变量设置
export TENCENTCLOUD_SECRET_ID="AKIDz..."
export TENCENTCLOUD_SECRET_KEY="xxxx="
export TENCENTCLOUD_SESSION_TOKEN="TOKEN" # 临时凭据时
aws iam list-attached-user-policies --user-name <user>
aws iam list-attached-role-policies --role-name <role>
# 暴力枚举
aws s3 ls 2>&1; aws ec2 describe-instances 2>&1; aws iam list-users 2>&1
# 1. 账户概览
tccli cam GetAccountSummary
# 2. 列出子用户
tccli cam ListUsers
# 3. 列出用户组
tccli cam ListGroups --Page 1 --Rp 50
# 4. 列出角色(关键——角色可被 AssumeRole 利用)
tccli cam DescribeRoleList --Page 1 --Rp 50
# 5. 列出策略(自定义策略是提权关键)
tccli cam ListPolicies --Scope Local --Page 1 --Rp 100 # 仅自定义策略
tccli cam ListPolicies --Scope All --Page 1 --Rp 100 # 全部策略
# 6. 查看具体策略内容
tccli cam GetPolicy --PolicyId <PolicyId> --PolicyVersion 1
# 7. 查看用户关联的策略
tccli cam ListAttachedUserPolicies --TargetUin <UIN>
# 8. 查看角色关联的策略
tccli cam ListAttachedRolePolicies --RoleId <RoleId>
# 9. 查看用户组关联的策略
tccli cam ListAttachedGroupPolicies --GroupId <GroupId>
# 10. 列出用户的 AccessKey
tccli cam ListAccessKeys
# 11. 查看角色详情(含 Trust Policy——跨账号攻击关键)
tccli cam GetRole --RoleId <RoleId>
# 12. 查看用户所属的组
tccli cam ListGroupsForUser --Uin <UIN>
# COS 存储(tccli cos 不支持 GetService,需用 SDK 或 coscli)
coscli ls 2>&1
# 或 Python SDK:
# pip install cos-python-sdk-v5
# from qcloud_cos import CosConfig, CosS3Client
# client = CosS3Client(CosConfig(Region='ap-guangzhou', SecretId='Sid', SecretKey='Skey'))
# print(client.list_buckets())
# CVM 实例
tccli cvm DescribeInstances 2>&1
# SCF 云函数(类似 Lambda 提权路径)
tccli scf ListFunctions --Namespace default --Limit 50 2>&1
# CBS 云硬盘
tccli cbs DescribeDisks 2>&1
# SSL 证书(可能包含私钥)
tccli ssl DescribeCertificates --Limit 50 2>&1
# TDSQL/MySQL
tccli cdb DescribeDBInstances 2>&1
# 密钥管理(KMS)
tccli kms ListKeys --Limit 50 2>&1
| 能做的操作 | 提权可能 | |------------|----------| | GetCallerIdentity 仅此 | 低 | | cos:GetObject / s3:GetObject | 中(可能找到更多凭据) | | cam:List*, cam:Get* / iam:List*, iam:Get* | 中(可分析提权路径) | | cam:CreateUser/AttachUserPolicy | 高(直接提权) | | cam:CreateRole/AttachRolePolicy | 高(创建高权限角色) | | cam:PassRole + scf:CreateFunction | 高(间接提权——SCF 挂高权限角色) | | sts:AssumeRole | 高(跳到更高权限角色) |
当前权限?
├─ 能操作 IAM/CAM(CreatePolicy/AttachPolicy)→ 直接提权
├─ 有 PassRole + Lambda/SCF → 间接提权(创建服务挂高权限 Role)
├─ 有 AssumeRole → 角色链跳转
├─ 只有数据读取 → 找更多凭据(COS/S3/Secrets/Lambda/SCF 代码/User-Data)
└─ 详细命令
├─ AWS → [references/aws-escalation.md](references/aws-escalation.md)
└─ 腾讯云 → [references/tencent-cam-escalation.md](references/tencent-cam-escalation.md)
qcs::cam::uin/ROOT_UIN:uin/ANY_UIN 格式qcs 资源描述符*:* 权限testing
Azure 云环境渗透测试总体方法论。当目标使用 Azure/Microsoft 365/Entra ID、发现 Azure 相关资产(Blob Storage/App Service/Azure VM/Azure Functions)、获取 Azure 凭据(Service Principal/Managed Identity/Access Token)、或需要对 Azure 环境进行安全评估时使用。提供从未授权枚举到 Entra ID 攻击、服务提权、Cloud-to-OnPrem 横向移动的全流程决策树。覆盖 35+ Azure 服务攻击面
tools
Mythic C2 操作方法论。当需要部署 Mythic、选择 Mythic Agent、安装 C2 Profile、配置 HTTP/DNS/WebSocket/SMB/TCP 通信、生成 payload、管理回连任务,或把 Mythic 作为跨平台 C2 框架用于授权红队演练时使用。覆盖 mythic-cli 安装、Agent/Profile 选择、SSL 证书配置、payload 构建和基础 OPSEC 判断
development
Docker 安全测试与容器渗透方法论。当需要评估 Docker 容器、Docker Daemon、Docker Registry、镜像层、构建产物或容器逃逸风险时使用。覆盖容器环境识别、特权容器逃逸、docker.sock/Remote API 利用、procfs/cgroup/capabilities 滥用、Docker 用户组提权、运行时/内核 CVE、Registry 枚举、镜像层 Secret 分析和构建上下文泄露。发现 Docker 容器环境、Registry 暴露、镜像凭据或容器配置错误时应使用此技能
development
使用 PadBuster 进行 Padding Oracle 攻击。当发现 Web 应用使用 CBC 模式加密且存在 Padding Oracle 漏洞时使用。PadBuster 可自动解密密文和伪造任意明文对应的合法密文,适用于加密 Cookie/Token/URL 参数。任何涉及 Padding Oracle 攻击、CBC 密文解密、Cookie 伪造的场景都应使用此技能