mcpField
K
kage

kage

github.com/workersio安全20842 次安装23 周前更新
代码仓库

关于 kage

Kage 是用于黑盒测试、源码审计和灰盒评估的渗透测试技能,工具在每次评估独立的 Kali 容器中运行。它组织侦察、针对性测试、验证、发现项审查和报告生成。

主要功能

  1. 01每次评估使用独立 Kali 容器
  2. 02黑盒、白盒和灰盒模式
  3. 03侦察与漏洞扫描
  4. 04并行执行分类测试
  5. 05PoC 验证与发现项审查
  6. 06生成审计报告

适用场景

  1. 01对域名开展黑盒评估
  2. 02结合灰盒上下文审计源码
  3. 03验证并记录可复现的发现项

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/workersio/skills --skill kage

安装后在 Claude Code 中输入/kage确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

README.md
agents/
access-control-tester.md
api-tester.md
auth-tester.md
chain-builder.md
client-side-tester.md
content-discovery.md
headers-tester.md
idor-tester.md
injection-tester.md
js-secret-scanner.md
judge.md
logic-tester.md
port-scanner.md
report-writer.md
ssrf-tester.md
verifier.md
vuln-scanner.md
assets/
creds.sample.md
dorks.json
wordlist-strategy.md
assets/docker/
Dockerfile
compose.yml
references/
agent-constraints.md
references/agentmail/references/
webhooks.md
websockets.md
references/audit-context-building/
plugin.json
references/audit-context-building/agents/
function-analyzer.md
references/audit-context-building/commands/
audit-context.md
references/audit-context-building/resources/
COMPLETENESS_CHECKLIST.md

详细介绍

Kage — 渗透测试沙箱

何时使用此技能

  • kage <target> — 黑盒测试
  • pentest <target> / security audit on <target> — 同上
  • kage audit <local path> — 仅白盒源码审计
  • kage greybox <target> <source-path> — 黑盒测试 + 源码上下文

<target> 可以是域名、URL、通配符(*.example.com)或本地源码 路径。在 greybox 模式下,第 0 轮会先对源码运行捆绑的 audit-context-building 方法,然后在第 2–3 轮中提供信任边界和认证流程 上下文。

容器模型

每个工具都通过 $K 垫片在独立的 Kali 容器中运行。每个工作目录都有 自己的容器(名称根据 $PWD 生成),因此可以同时运行两个测试任务, 互不干扰。

SKILL_DIR="$HOME/.claude/skills/kage"
K="$SKILL_DIR/scripts/k"
"$K" <cmd>            # runs <cmd> inside this engagement's container
"$K" ls | reset | prune | nuke   # management subcommands

探测脚本位于容器内的 /skill/scripts/*.py(只读绑定挂载)。 结果写入 /workspace/results/<target>/(从当前工作目录绑定挂载)。

切勿直接在主机上运行渗透测试工具。


第 0 轮 — 设置

SKILL_DIR="$HOME/.claude/skills/kage"
K="$SKILL_DIR/scripts/k"
"$K" whoami            # warms the sandbox; surfaces docker errors

TARGET="example.com"   # derive from user prompt; slugify for paths

# Host-side mkdir so dirs are owned by your UID (host Write tool needs this).
mkdir -p "results/$TARGET"/{recon,vulns,testing,exploits,chains,verification,judging,reports}

如果用户当前工作目录中存在 ./creds.md,请读取。如果不存在:询问 是否继续进行黑盒测试,或指向模板 assets/creds.sample.md。

灰盒预检(仅当模式为 greybox 时)

将 audit-context-building 方法应用于 <source-path>。对于复杂模块,分派 function-analyzer 子 Agent;如有必要,可并行分派多个。

输出 results/$TARGET/context.md,内容涵盖:信任边界、认证 流程、数据流、高价值入口点、已知敏感参数。所有第 2 轮测试人员和第 3a 轮利用者都要将 context.md 与 常规输入一并读取。

写入 results/$TARGET/engagement.json,内容为 {target, scope_type, started_at, rules_of_engagement}。


第 1 轮 — 侦察(两个阶段)

发现阶段以流式管道快速运行(1–3 分钟)。漏洞扫描耗时较长(5–15 分钟), 并在子 Agent 中独立运行,以免 nuclei 的冗长输出 污染主上下文。

阶段 1 — 发现
R="results/$TARGET"
"$K" bash -c '
  set -e
  cd /workspace
  R="results/'"$TARGET"'"
  (subfinder -d "'"$TARGET"'" -silent \
     | tee "$R/recon/subs.txt" \
     | httpx -silent -title -tech-detect -status-code \
     | tee "$R/recon/live.txt") &
  (gau --subs "'"$TARGET"'" > "$R/recon/wayback.txt") &
  (until [ -s "$R/recon/live.txt" ]; do sleep 1; done
   katana -u "$R/recon/live.txt" -d 3 -jc -silent -o "$R/recon/crawl.txt") &
  (python3 /skill/scripts/dorks.py -d "'"$TARGET"'" --output "$R/recon/dorks.json") &
  wait'

同时分派 port-scanner: HOSTS_FILE=$R/recon/live.txt,OUTDIR=$R/recon/ports/。

如果已设置 GITHUB_TOKEN,也运行 scripts/gitmail.py:

"$K" bash -c "GITHUB_TOKEN=\"$GH_TOKEN\" python3 /skill/scripts/gitmail.py \
   -O <guessed-org> -r -s --verified-only \
   -o /workspace/$R/recon/github.json"

等待管道、port-scanner(以及运行时的 gitmail)完成后再进入阶段 2。

阶段 2 — 漏洞扫描

分派 vuln-scanner,并设置 LIVE_HOSTS_FILE=$R/recon/live.txt、OUTPUT=$R/vulns/nuclei.txt。

等待 vuln-scanner 完成后再进入第 2 轮。

摘要

写入 recon/summary.md:子域名数量、存活主机数量、高价值 端口、nuclei 严重性计数 + 重点结果、认证端点、包含 ID 的 API 路径、接受 URL 的参数。

如果用户说了 recon-only,则到此为止。


第 2 轮 — 深入测试(并行扇出)

读取 recon/summary.md。对于每个触发条件,同时启动相应的测试子 Agent——在一条消息中发出所有调度指令。每个测试器都会向共享容器发起自己的 $K 调用(docker exec 可并发执行),并写入自己的 testing/<class>/ 路径。

recon 中的触发条件调度
login / SSO / OAuth / JWT 端点auth-tester
带对象 ID 的 API 端点 + 2 个账户idor-tester
403、管理面板、受角色限制的路由 + ≥2 种角色access-control-tester
url= / redirect= / proxy= / fetch= / webhook= 参数ssrf-tester
参数化 URL、搜索字段、表单、GraphQL 变量injection-tester
面向用户的 HTML(评论、个人资料、搜索)client-side-tester
OpenAPI/Swagger URL、/graphql、REST 路由api-tester
支付 / 优惠券 / 兑换 / 邀请 / 注册端点logic-tester
爬虫探测范围较小;可能存在隐藏路径content-discovery
第 1 轮发现的 JS 包js-secret-scanner
任何可访问的 Web 主机headers-tester
需要 2 个或更多已创建账户(自助注册)使用 agentmail 创建临时邮箱(需要 AGENTMAIL_API_KEY)

在 greybox 模式下,每个测试器还会读取 results/$TARGET/context.md,针对源码已知的薄弱点进行测试,而不是泛化扫描。

等待所有测试器返回。 将它们的 JSON 汇总为候选发现清单。每个探测都会生成统一的 findings[] / summary{} 结构;所有 HTTP 请求都通过 scripts/tls.py(Cloudflare 目标则使用 scripts/browser.py)。

5 分钟规则。 如果某个线索在 5 分钟内无法证实,就继续处理下一个。不要提交理论上的漏洞。


第 3 轮 — 利用、验证、串联、判定

按顺序执行。每一步的结果都会作为下一步的输入。

3a. 利用 — 编写 PoC 前先筛选

阅读 references/judging.md。对每个候选发现:

  • 直接剔除符合自动剔除模式的项目(缺少响应头且没有 PoC、版本横幅、自我型 XSS、注销 CSRF、TRACE/TRACK、TLS 密码套件问题、SPF/DKIM/DMARC、信息泄露型 500 错误、缺少速率限制但没有滥用场景)。不要为这些项目编写 PoC。
  • 如果影响描述中包含“可能会”或需要黑盒测试无法验证的条件,则剔除。在 greybox 模式下,先检查 context.md——源码可能会证实或否定这一点。
  • 只有在攻击者操作能够产生可观察、可复现且具有实际影响的服务器端结果时,才编写 PoC(数据访问、代码执行、绕过身份验证、成本放大、状态变更、财务影响)。

对于每个保留项,在 results/$TARGET/exploits/<slug>.py 编写一个 curl_cffi PoC。无法在首次运行时复现的项目一律剔除。

3b. 验证 — 并行执行

针对每个 PoC,调度 verifier——在一条消息中发出所有 verifier 任务。每个验证器都有自己的 OUTDIR=results/$TARGET/verification/F<NNN>/、全新的身份验证信息、干净的会话,并进行 3 次可复现性测试。

将结果汇总到 verification/verified_findings.json。

3c. 串联

针对已验证的发现调度 chain-builder。它会映射 references/chains.md 中的 7 种规范模式,并寻找有创意的组合。

3d. 判定

调度 judge。它会应用 references/judging.md 中的 4 道关卡筛选,评定置信度和 CVSS,去重,并执行排除清单。

输出:judging/approved_findings.json(唯一会纳入报告的发现)、judgment.md(审计记录)、dropped_findings.md。


第 4 轮——审计报告

调度 report-writer,并提供: TARGET、ENGAGEMENT_JSON、APPROVED_FINDINGS_JSON、 TEMPLATE=$SKILL_DIR/references/audit-report-template.md、 OUTPUT=results/$TARGET/audit-report.md。

该 Agent 根据 engagement 和已批准的发现填写 {{placeholders}}。 它不会重新筛选——评审者已完成筛选。完成后,向用户打印汇总 表。


需要明确呈现的故障模式(不要忽略)

  • 未安装 Docker / Docker 未运行 → 打印 shim 的错误,然后停止。
  • 目标无法访问 / DNS 解析失败。
  • 被限流或被 WAF 拦截 → 放慢速度、轮换指纹 (tls.py --impersonate <name>),或改用 scripts/browser.py。
  • 用户要求进行身份验证测试,但缺少 creds.md。

参考文档(按需加载)

评论

支持 Markdown