mcpField
P
php-deser-audit

php-deser-audit

github.com/0xsheSecurity40975 installsUpdated 31w ago
Repository

About php-deser-audit

An Agent skill for auditing PHP source code for unsafe deserialization and object-injection chains. It requires tracer evidence, limits confirmation when evidence is missing, and produces reports with a conceptual or validation PoC.

Key features

  1. 01Trace deserialization input sources
  2. 02Analyze object types and magic-method chains
  3. 03Require tracer DESER evidence
  4. 04Classify findings and generate reports
  5. 05Provide conceptual or validation PoCs

Use cases

  1. 01Audit unserialize calls in PHP projects
  2. 02Trace cross-class magic methods to sensitive operations
  3. 03Mark findings unverified when evidence is incomplete

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/0xshe/php-code-audit-skill --skill php-deser-audit

After installing, type/php-deser-auditin Claude Code to confirm it loaded.

Details

From the project README

PHP 反序列化审计(php-deser-audit)

分析 PHP 项目源码,识别用户可控数据进入 unserialize() 或等价反序列化点,结合类的魔术方法(__wakeup/__destruct/__call/__toString/{value})判断是否存在对象注入可利用链。

分级与编号

  • 详见:shared/SEVERITY_RATING.md
  • 漏洞编号:{C/H/M/L}-DESER-{序号}

危险 Sink(必做)

  • unserialize($data)
  • unserialize(base64_decode({value}))
  • 任何将用户输入转换后再反序列化的路径

可控性(必做)

必须追踪并输出:

  • 反序列化入参来自哪里:GET/POST/Cookie/Session/Header/数据库字段等
  • 是否存在 base64/加密/解码/拼接步骤(仍可能可控)
  • 是否有校验/签名(如 hash_hmac)以及签名是否可靠(需要证据)

gadget 链识别(必做)

必须输出:

  • 反序列化后的对象类型(或可能类型集合)
  • 该类型类中魔术方法列表与触发条件
  • “从对象创建 -> 魔术方法触发 -> 最终敏感操作(如文件/命令/SSRF/数据库)”的数据流链

tracer 触发条件(必做)

  • 反序列化入参经过多层 decode/封装
  • 魔术方法链跨多个类/文件

证据引用(强制:来自 php-route-tracer)

每条反序列化/对象注入疑似漏洞必须逐项引用 trace 输出中 ## 9) Sink Evidence Type Checklist 的 DESER 行对应证据要点(允许状态为待验证,但证据引用必须存在):

  1. EVID_DESER_CALLSITE:反序列化调用点位置证据(unserialize 等等价点)
  2. EVID_DESER_INPUT_SOURCE:入参用户可控来源证据
  3. EVID_DESER_OBJECT_TYPE_MAGIC_TRIGGER_CHAIN:反序列化后对象类型/魔术方法触发条件证据(以及最终敏感操作点链路证据,若能定位)

tracer 证据缺失处理(强制)

  • 若无法定位上述 1~3 任一关键证据要点:该漏洞状态只能标记为 ⚠️待验证,不得直接给出 ✅已确认可利用。

报告输出

输出到:

{output_path}/vuln_audit/deser_{timestamp}.md

PoC(强制,但标注为“概念 PoC/验证 PoC”)

必须给出:

  • 真实路由(或 cookie/session 字段使用方式)
  • payload 生成思路(若无法生成真实 gadget payload,必须给出“需人工补齐的部分”并说明原因,同时仍保留可执行框架与可替换字段)

Comments

Markdown supported