SuperAPI AI 工具集

php-exploit-chain-audit

安全与审计

查看项目

更新于 10-15 10:42

技能介绍

用途

php-exploit-chain-audit 是一个 PHP 跨漏洞利用链聚合工具。它的目标是把 vuln_audit/_{timestamp}.md(以及可能的 auth_audit/_{timestamp}.md)里已确认或待验证的漏洞,基于“可利用前置条件”串联成跨阶段利用链,并输出可观测的利用链叙事。

主要能力

  • 将各 sink 子 skill 产出的漏洞报告按前置条件承接关系聚合为利用链。
  • 输出利用链总览表,包含 chain_id、链路类型、起点/中间/终点漏洞编号、链路可利用性、关键依赖(路由/前置条件)。
  • 输出最短利用链的逐步叙事,按 Step 顺序说明每个漏洞的触发路由、可利用性、前置条件是否满足。
  • 输出“未能串联”的原因清单,至少覆盖缺少关键落点/可访问性证据、路由鉴权不一致、trace_status 不满足、需要特定环境依赖等类别。
  • 按强制规则计算链路可利用性:由链路最弱环节决定。

使用方式

输入依赖(建议):

  • vuln_audit/*_{timestamp}.md:来自各 sink 子 skill 的漏洞报告集合,包含编号、可利用性、触发条件、位置证据与数据流链。
  • auth_audit/auth_audit_report_{timestamp}.md:用于补充链路中“鉴权门槛”是否一致。
  • route_tracer/:如需补充“同一 route 的 sink 执行证据”,可通过漏洞报告中的 trace 证据引用回溯(不强制)。

输出到:

{output_path}/exploit_chain/exploit_chains_{timestamp}.md

输出模板必须包含以下结构:

Exploit Chains (PHP) - Aggregation

项目路径: {source_path} 生成时间: {timestamp}


1) 利用链总览表

chain_id 链路类型 起点漏洞(编号) 中间漏洞(编号) 终点漏洞(编号) 链路可利用性 关键依赖(路由/前置条件)

2) 最短利用链(强制至少 1 条;若无则输出“未发现可拼接利用链”)

chain_id: {id}

2.{n}) 链路逐步叙事(按顺序)

Step 1: {漏洞编号}(类型 {SQL/CMD/FILE/WRITE/UPLOAD/DESER/TPL/EXPR/...})

  • 触发路由/入口:{route info from vuln report}
  • 可利用性:{✅/⚠️/❌/🔍}(来自漏洞报告“可利用性”字段)
  • 前置条件是否满足:{是/否/待验证}(解释依据:鉴权门槛、输入可控性、trace_status)

Step 2: {漏洞编号}

  • ...

Step Final: {终点漏洞编号}

  • 为什么它是终点(导致最关键的敏感操作):{从 vuln report 中提取的结论性描述;不需要再堆证据点细节}

关键证据引用(链路级)

按 Step 顺序列出:

  • {漏洞报告文件名}:{漏洞编号}(从该漏洞报告中提取“触发条件/可利用性前置条件/PoC 所需路由”)

3) “未能串联”的原因清单(强制)

列出至少以下类别:

  1. 缺少关键落点/可访问性证据(例如 WRITE/UPLOAD 后未形成可读/可执行面)
  2. 路由鉴权不一致(链上部分漏洞需要的权限与另一路由不匹配)
  3. trace_status 不满足(PARTIAL/UNRESOLVED 导致无法确认链路可利用)
  4. 需要特定环境依赖(🔍)

每条原因必须至少引用 1 个具体漏洞编号(来自 vuln_audit)。

适用场景

  • 已通过各 sink 子 skill 产出漏洞报告,需要进一步判断这些漏洞能否串联成跨阶段利用链。
  • 需要以链路视角评估整体可利用性,而非孤立看待单个漏洞。
  • 需要输出结构化的利用链叙事文档,供后续审计或复核使用。

限制

  • 不新增 EVID_* 证据点字典,也不要求 php-route-tracer 直接输出额外契约字段。
  • 不复写每条漏洞的完整修复建议,只在链路层说明“为何下一步前置条件成立/不成立”。
  • 链路可利用性以构成链的最弱环节决定:任一环节不可利用或证据缺失,则链整体状态相应降级。
  • 必须使用漏洞报告里的编号作为链的 Step 纽带,禁止用抽象描述替代编号。
  • 若只能找到孤立漏洞且无法满足前置条件承接,不应强行输出链,而应在“未能串联原因清单”中解释原因。
  • 链路类型建议方向包括:落点写入/覆盖 -> 包含/读取 -> 代码执行;落点写入 -> 模板/表达式利用;对象注入(DESER)-> 后续敏感操作。这些为建议方向,不强制。

链路可利用性计算规则

  • 若所有 Step 的可利用性均为 ✅ 已确认,则链路为 ✅ 已确认。
  • 若任一 Step 为 ⚠️ 待验证(且非仅信息性缺失),则链路为 ⚠️ 待验证。
  • 若任一 Step 为 ❌ 不可利用,则链路为 ❌ 不可利用。
  • 若任一 Step 为 🔍 环境依赖,且无法在其它 Step 中兜底,则链路为 🔍 环境依赖。