mcpField
P
php-xxe-audit

php-xxe-audit

github.com/0xsheセキュリティ40974 回インストール31 週間前に更新
リポジトリ

php-xxe-audit について

php-xxe-auditは、PHPプロジェクトのXML外部エンティティリスクを調べるセキュリティスキルです。パーサーの保護設定、入力元、出力経路を確認し、trace証拠に基づく報告を求めます。

主な機能

  1. 01XMLパーサー呼び出しの特定
  2. 02外部エンティティとDOCTYPE保護の確認
  3. 03XML入力元の追跡
  4. 04応答またはOOB出力経路の確認
  5. 05tracer証拠の引用を必須化

活用シーン

  1. 01PHPプロジェクトのXML解析監査
  2. 02ユーザー制御XMLのXXEリスク確認
  3. 03応答・帯外出力経路の整理

インストール

コマンドをコピーしてターミナルで実行します。

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

インストール後、Claude Code で/php-xxe-auditを入力して読み込まれたか確認します。

詳細

プロジェクトの README より

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

  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

コメント