mcpField
P
php-xxe-audit

php-xxe-audit

github.com/0xshe安全40974 次安装31 周前更新
代码仓库

关于 php-xxe-audit

php-xxe-audit 是用于审计 PHP 项目 XML 外部实体风险的安全技能,检查解析器配置、输入来源与回显路径,并要求用 trace 证据支撑风险判断。

主要功能

  1. 01识别 XML 解析器调用
  2. 02检查外部实体与 DOCTYPE 防护
  3. 03追踪 XML 输入来源
  4. 04核查解析结果回显或 OOB
  5. 05要求引用 tracer 证据

适用场景

  1. 01审计 PHP 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

评论

支持 Markdown