✨ PHP Code Audit Skill
本项目是一套面向 PHP Web 的白盒代码安全审计 Skill 集合,覆盖「路由枚举 → 鉴权建模 → 数据流追踪 → 分类漏洞审计 → 证据一致性校验 → 报告汇总」全流程;在 Cursor 等环境中以 Agent 按 SKILL 文档执行 的方式落地。
【经过实战测试,审计WordPress等常见开源项目,效果显著,出过很多0day】
项目特点
证据契约驱动:以 php-route-tracer 输出的证据点(EVID_*)作为多数子审计 skill 的硬门槛。
全量路由与参数:php-route-mapper 须输出完整路由与参数结构(禁止省略)。
可控性与分支证明:trace 含参数可控性矩阵、分支执行证据与 sink 定位汇总。
结论强度约束:高危结论依赖证据链闭合,避免仅凭关键字猜测即标「已确认」。
适用场景:在合法授权前提下,用于 PHP 项目的白盒安全评估、上线前审计、修复验证与回归辅助。
📌 快速索引
🛡️ 免责声明
本项目仅用于合法合规的安全测试与代码安全审计。请勿用于未授权目标。
🧩 能力总览
路由建模与追踪
漏洞审计
每类漏洞审计遵循证据契约:须逐项引用 php-route-tracer 的 ## 9) Sink Evidence Type Checklist 中对应行的证据点 ID(无 trace 时的静态对齐方式见 shared/EVIDENCE_POINT_IDS.md 文首说明)。
SQL 注入:php-sql-audit
NoSQL 注入:php-nosql-audit
命令注入:php-cmd-audit
SSRF:php-ssrf-audit
XSS:php-xss-audit
任意文件读取/路径穿越(含 include/require 执行面边界):php-file-read-audit
文件上传:php-file-upload-audit
任意文件写入(路径穿越到落点/写入链):php-file-write-audit
归档解压路径穿越(Zip Slip):php-archive-extract-audit
XXE:php-xxe-audit
反序列化/对象注入:php-deser-audit
模板注入/SSTI:php-tpl-audit
LDAP 注入:php-ldap-audit
表达式注入(非模板):php-expr-audit
认证/鉴权绕过/越权/IDOR:php-auth-audit
CSRF:php-csrf-audit
开放重定向:php-open-redirect-audit
CRLF/响应分割:php-crlf-audit
会话与 Cookie 安全:php-session-cookie-audit
安全配置(危险开关/CORS/错误暴露/安全头):php-config-audit
加密与密钥安全:php-crypto-audit
业务逻辑漏洞:php-logic-audit
安全日志与监控:php-logging-audit
非 trace-gate 的增强能力
链路聚合
供应链与框架检测
php-vuln-scanner:基于 composer.json / composer.lock(及可选规则集)做依赖版本与已知漏洞匹配;可与环境中的 composer audit 交叉比对(见该 SKILL 内说明)。
php-*-audit(框架专项):Laravel / Symfony / Yii / ThinkPHP / WordPress / CodeIgniter 等典型配置与用法风险映射。
🔒 证据契约
本项目核心是「字段级同名对齐」:
php-route-tracer 必须输出:
shared/EVIDENCE_POINT_IDS.md 定义证据点 ID 字典(EVID_*);尚未有 trace 时如何仍以静态代码对齐 ID,见该文件文首「尚未执行 php-route-tracer」小节。
各子审计 skill 在「证据引用」部分须逐项引用对应证据点 ID;缺失则只能标记为 ⚠️待验证,不得直接声称 ✅已确认可利用。
shared/IO_PATH_CONVENTION.md 统一 路由/参数等输入路径:routes_*.md 与 route_mapping/routes_*.md、流水线合并报告中的章节逻辑等价。
可理解为:trace 输出是「合同」,子审计按 EVID_*「盖章对齐」。
🚀 主流水线:php-audit-pipeline
php-audit-pipeline 为编排总入口,阶段顺序为:路由/参数 → 鉴权映射 → 组件漏洞扫描 →(可选框架专项)→ 分批追踪(php-route-tracer)→ 分类审计 → 汇总质量报告 → 利用链聚合。
补充约定(与仓库内 SKILL 一致):
路径别名:shared/IO_PATH_CONVENTION.md(合并流水线 vs 独立落盘 route_mapping/ 等)。
Sink 细则:shared/PHP_SINK_REFERENCE.md(pipeline 正文引用该文件,避免重复冗长)。
覆盖矩阵:最终汇总须含子 skill / 审计面矩阵(每行:已执行 / 不适用 / 已延期 + 依据);非 HTTP 入口使用合成 route_id,见 pipeline 阶段 3。
漏报抑制:trace 为 PARTIAL/UNRESOLVED 或静态兜底未闭合时,须在质量报告中保留 「Trace 未闭合 / 待补证风险池」,不得静默删除(详见 php-audit-pipeline)。
输入参数
输出目录
流水线在合并模式下通常只产生一份汇总 MD(不强制拆成多文件落盘):
其中:
🧭 如何使用
在 Cursor 中选择 Agent Skill以 php-audit-pipeline 为入口,提供 source_path 与可选 output_path。
如在Ai对话中直接使用 使用我的skill php-audit-pipeline 为入口 进行代码审计 报告输出在根目录
trace 未闭合时的预期表现若部分路由 trace 契约校验失败,会标记为 PARTIAL/UNRESOLVED:结论不得静默消失,须进入 ⚠️待验证 / 🔍环境依赖,并汇总到质量报告 「Trace 未闭合 / 待补证风险池」(可与阶段 2.5 静态兜底交叉引用)。
阅读顺序优先查看汇总文件中的 「质量报告章节」,再下钻 trace / 漏洞详情。
🚀 配置与使用示例
1) 需要你提供的配置
2) 一键运行示例(推荐:php-audit-pipeline)
在 Cursor 里给 Agent 的示例提示词(路径请替换为实际值):
请使用 `php-audit-pipeline` 审计:source_path = "C:/path/to/your-php-project"output_path = "C:/path/to/your-php-project_audit"
建议重点查看:
3) 可选:手动分阶段运行
路由枚举与参数建模:php-route-mapper → 写入汇总对应章节
鉴权映射:php-auth-audit(STATIC_MAPPING)
深度追踪:php-route-tracer
分类漏洞审计(trace-gate 等):如 php-sql-audit、php-cmd-audit、php-file-read-audit 等
利用链聚合:php-exploit-chain-audit
4) 常见现象:为什么大量 ⚠️待验证
多数漏洞类型为 trace-gate:当 trace 缺失关键证据点或 trace_status=PARTIAL/UNRESOLVED 时,pipeline 禁止标 ✅已确认,并须保留 ⚠️待验证;同时在 「Trace 未闭合 / 待补证风险池」 列出缺失证据与补证建议(不得用「未生成漏洞条目」代替记录)。
排查建议:质量报告未完成项 → 对应 trace → 子 skill 的 EVID_* 是否齐全(见 EVIDENCE_POINT_IDS.md)。
🧰 新增/扩展 skill 的规范
每个 skill 的 SKILL.md 建议包含 YAML 头部:
并尽量遵循本仓库约束:
🗺️ 路线图
可按证据契约复杂度推进:
新增 trace-gate 类型:同步扩展 EVIDENCE_POINT_IDS.md、php-route-tracer 的 ## 9) 与 pipeline 接入说明。
新增非 trace-gate 的聚合/质量类 skill:不改动契约前提下提升产出一致性。
📁 目录结构
根目录包含多个 php-*/SKILL.md 子 skill;基础设施与编排为:
php-audit-pipeline:统一编排与汇总约定
php-route-mapper / php-route-tracer:路由与追踪
shared/:证据 ID、路径约定、严重度、Sink 参考等
🪪 下载地址
https://github.com/0xShe/PHP-Code-Audit-Skill