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

php-xxe-audit

PHPのWebソースコードを監査し、XML解析点やエンティティ処理設定を識別し、XML入力の追跡と結果の表示を行い、脆弱性の悪用可能性の評価、PoC、修正提案を出力するSkill。

📜 元の英語説明(参考)

PHP Web 源码 XXE 审计工具。识别 XML 解析点与实体处理配置,追踪 XML 输入来源与回显,输出可利用性分级、PoC 与修复建议(禁止省略)。

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

一言でいうと

PHPのWebソースコードを監査し、XML解析点やエンティティ処理設定を識別し、XML入力の追跡と結果の表示を行い、脆弱性の悪用可能性の評価、PoC、修正提案を出力するSkill。

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

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

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

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

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

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して php-xxe-audit.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → php-xxe-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-17
同梱ファイル
1

📖 Skill本文(日本語訳)

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

PHP XXE 監査(php-xxe-audit)

PHP プロジェクトのソースコードを分析し、XXE(XML External Entity)リスクを特定します。XML 解析ポイントが外部エンティティ/DOCTYPE を許可し、XML 入力が制御可能で、かつエコーバックまたは OOB チャネルが存在する場合、ファイル読み取り/SSRF/DoS につながる可能性があります。

分類と番号付け

  • 詳細については、shared/SEVERITY_RATING.md を参照してください。
  • 脆弱性番号:{C/H/M/L}-XXE-{連番}

XXE Sink(必須)

XML 解析に関連するものを特定します。

  • DOMDocument->loadXML/loadHTML
  • simplexml_load_string/simplexml_load_file
  • XMLReader->open/xml
  • DOMDocument->load(内容がユーザー制御可能な文字列/ストリームからの場合) 危険なパターン:
  • 外部エンティティが無効化されていない/ネットワークアクセスが制限されていない
  • 解析パラメータが DOCTYPE を許可している

防御チェック(必須)

パーサーの防御に関する証拠を必ず出力してください。

  • libxml セキュリティパラメータ:LIBXML_NONETLIBXML_NOENT(注意:NOENT はリスクを増大させる可能性があります)、LIBXML_DTDLOAD などの使用状況
  • libxml_disable_entity_loader(true) の使用有無(PHP のバージョンによってポリシーが異なるため、証拠が必要です)
  • 解析時に安全なオプションを渡し、ネットワークアクセスを無効にしているか

入力元とエコーバック(必須)

それぞれを必ず出力してください。

  • XML 入力元:$_POST/php://input/アップロードファイルストリームなど
  • エコーバックパス:解析結果がレスポンスに書き戻されているか(echo/テンプレート出力)、または Blind(OOB)のみか。

tracer トリガー条件(必須)

  • XML が多層にわたって渡され/解析された後、フィールドが再度出力される
  • エコーバック位置が不明確、またはユーティリティクラス内にある

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

各 XXE 疑いのある脆弱性について、trace 出力中の ## 9) Sink Evidence Type ChecklistXXE 行に対応する証拠の要点を項目ごとに引用する必要があります(ステータスは「検証待ち」でも構いませんが、証拠の引用は必須です)。

  1. EVID_XXE_PARSER_CALL:XML パーサー呼び出し点の位置に関する証拠(DOMDocument->loadXML/simplexml_load_string/XMLReader->open など)
  2. EVID_XXE_INPUT_SOURCE:入力ストリームのソースに関する証拠($_POST/php://input/アップロード読み取り/パラメータが解析に入る対応する証拠)
  3. EVID_XXE_ENTITY_DOCTYPE_SAFETY_AND_ECHO:外部エンティティ/DOCTYPE 無効化に関するセキュリティオプションの証拠(LIBXML_* または無効化ポリシー)、および解析結果のエコーバック位置に関する証拠

tracer 証拠の欠落処理(必須)

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

レポート出力

以下に出力されます。

{output_path}/vuln_audit/xxe_{timestamp}.md
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

PHP XXE 审计(php-xxe-audit)

分析 PHP 项目源码,识别 XXE(XML External Entity)风险:当 XML 解析点允许外部实体/DOCTYPE,且 XML 输入可控、并存在回显或 OOB 通道时,可能导致文件读取/SSRF/DoS。

分级与编号

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

XXE Sink(必做)

识别 XML 解析相关:

  • DOMDocument->loadXML/loadHTML
  • simplexml_load_string/simplexml_load_file
  • XMLReader->open/xml
  • DOMDocument->load(若内容来自用户可控字符串/流) 危险模式:
  • 未禁用外部实体/未限制网络访问
  • 解析参数允许 DOCTYPE

防护检查(必做)

必须输出解析器防护证据:

  • libxml 安全参数:LIBXML_NONETLIBXML_NOENT(注意:NOENT 可能放大风险)、LIBXML_DTDLOAD 等使用情况
  • 是否使用:libxml_disable_entity_loader(true)(不同 PHP 版本策略不同,仍需给证据)
  • 解析时是否传入安全选项并禁用网络访问

输入来源与回显(必做)

必须分别输出:

  • XML 输入来源:$_POST/php://input/上传文件流等
  • 回显路径:是否把解析结果写回响应(echo/模板输出)或仅 Blind(OOB)。

tracer 触发条件(必做)

  • XML 经过多层传递/解析后字段再输出
  • 回显位置不清晰或在工具类中

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

每条 XXE 疑似漏洞必须逐项引用 trace 输出中 ## 9) Sink Evidence Type ChecklistXXE 行对应证据要点(允许状态为待验证,但证据引用必须存在):

  1. EVID_XXE_PARSER_CALL:XML 解析器调用点位置证据(DOMDocument->loadXML/simplexml_load_string/XMLReader->open 等)
  2. EVID_XXE_INPUT_SOURCE:输入流来源证据($_POST/php://input/上传读取/参数进入解析的对应证据)
  3. EVID_XXE_ENTITY_DOCTYPE_SAFETY_AND_ECHO:外部实体/DOCTYPE 禁用相关安全选项证据(LIBXML_* 或禁用策略)以及解析结果回显位置证据

tracer 证据缺失处理(强制)

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

报告输出

输出到:

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