jpskill.com
🛠️ 開発・MCP コミュニティ

php-deser-audit

PHPのWebソースコードにおける、unserializeの注入点と制御可能なデータソースを特定し、マジックメソッドチェーンを追跡することで、悪用可能性の評価、PoC、および修正提案を出力するSkill。

📜 元の英語説明(参考)

PHP Web 源码反序列化/对象注入审计工具。识别 unserialize 注入点与可控数据来源,追踪魔术方法链,输出可利用性分级、PoC 与修复建议(禁止省略)。

🇯🇵 日本人クリエイター向け解説

一言でいうと

PHPのWebソースコードにおける、unserializeの注入点と制御可能なデータソースを特定し、マジックメソッドチェーンを追跡することで、悪用可能性の評価、PoC、および修正提案を出力するSkill。

※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o php-deser-audit.zip https://jpskill.com/download/6003.zip && unzip -o php-deser-audit.zip && rm php-deser-audit.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/6003.zip -OutFile "$d\php-deser-audit.zip"; Expand-Archive "$d\php-deser-audit.zip" -DestinationPath $d -Force; ri "$d\php-deser-audit.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して php-deser-audit.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → php-deser-audit フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-17
取得日時
2026-05-18
同梱ファイル
1

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

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)があるかどうか、および署名が信頼できるかどうか(証拠が必要です)

ガジェットチェーンの識別(必須)

以下を出力する必要があります。

  • 逆シリアル化後のオブジェクトタイプ(または可能性のあるタイプ集合)
  • そのタイプクラスのマジックメソッドリストとトリガー条件
  • 「オブジェクト作成 -> マジックメソッドトリガー -> 最終的な機密操作(ファイル/コマンド/SSRF/データベースなど)」のデータフローチェーン

トレーサーのトリガー条件(必須)

  • 逆シリアル化の入力パラメータが多層のデコード/カプセル化を経ている場合
  • マジックメソッドチェーンが複数のクラス/ファイルにまたがる場合

証拠の引用(必須:php-route-tracer から)

各逆シリアル化/オブジェクトインジェクションの疑いのある脆弱性について、トレース出力の ## 9) Sink Evidence Type ChecklistDESER 行に対応する証拠の要点を個別に引用する必要があります(ステータスは未検証でも構いませんが、証拠の引用は必須です)。

  1. EVID_DESER_CALLSITE:逆シリアル化呼び出し点位置の証拠(unserialize など同等点)
  2. EVID_DESER_INPUT_SOURCE:入力パラメータのユーザー制御可能なソースの証拠
  3. EVID_DESER_OBJECT_TYPE_MAGIC_TRIGGER_CHAIN:逆シリアル化後のオブジェクトタイプ/マジックメソッドトリガー条件の証拠(および最終的な機密操作点へのリンクの証拠、特定可能な場合)

トレーサー証拠の欠落処理(必須)

  • 上記 1~3 のいずれかの重要な証拠の要点を特定できない場合:その脆弱性のステータスは ⚠️未検証 とのみマークでき、直接 ✅悪用可能と確認済み とすることはできません。

レポート出力

以下に出力します。

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

PoC(必須、ただし「概念 PoC/検証 PoC」と表記)

以下を提示する必要があります。

  • 実際のルート(または cookie/session フィールドの使用方法)
  • ペイロード生成の考え方(実際のガジェットペイロードを生成できない場合は、「手動で補完する必要がある部分」を理由とともに提示し、実行可能なフレームワークと置換可能なフィールドは保持する必要があります)
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

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 ChecklistDESER 行对应证据要点(允许状态为待验证,但证据引用必须存在):

  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,必须给出“需人工补齐的部分”并说明原因,同时仍保留可执行框架与可替换字段)