mcpField
P
php-xss-audit

php-xss-audit

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

关于 php-xss-audit

用于 PHP 项目源码的 XSS 安全审计技能,检查用户输入到响应输出的链路、转义与模板风险,并要求以 trace 证据支撑判断。

主要功能

  1. 01检查 PHP 与模板输出点
  2. 02追踪用户输入到输出的链路
  3. 03核查上下文转义与转义关闭
  4. 04按要求引用 tracer 证据
  5. 05生成含 PoC 的审计报告

适用场景

  1. 01审计 PHP 页面中的用户可控输出
  2. 02检查 Twig、Smarty 与 Blade 模板
  3. 03验证分支或多层处理中的转义缺陷

安装

复制下面的命令,在终端中运行。

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

安装后在 Claude Code 中输入/php-xss-audit确认已加载。

详细介绍

来自项目 README

PHP XSS 审计(php-xss-audit)

分析 PHP 项目源码,识别跨站脚本(XSS):用户输入进入输出上下文且未做正确转义/编码,或框架禁用了自动转义导致表达式执行/HTML 注入。

分级与编号

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

XSS Sink(必做)

识别以下输出点:

  • 原生输出:echo/print/printf/<?= ?>(输出变量到响应)
  • 字符串拼接到响应:header() / setcookie()(若包含可控内容)
  • 模板渲染:
    • Twig:{{ }}(转义)与 {% autoescape false %} / |raw 风险点
    • Smarty:fetch/display 与不安全变量输出
    • Blade 类:{!! !!}(不转义输出)
  • 动态脚本/事件属性:输出到 on* 属性、<script> 内、URL 参数

逃逸/防护检查(必做)

对每条疑似链必须分析:

  • 是否存在 htmlspecialchars/htmlentities 或框架自动转义
  • 是否存在上下文编码(HTML、属性、JS、URL)
  • 是否禁用了转义(raw/raw filter/unescaped output)

tracer 触发条件(必做)

  • 用户输入经历多层处理、拼接成 HTML 片段
  • 存在分支:某分支转义,另一分支不转义
  • 输出点在模板层,输入在 controller 层

报告输出

输出到:

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

漏洞条目模板(强制)

与 php-sql-audit 基本一致,但在数据流链里必须明确:

  • 输出上下文:HTML body/attribute/script/URL 参数/模板片段
  • 具体转义函数或转义关闭点的位置与证据
  • PoC 必须包含可执行 XSS payload,并区分需要的编码方式

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

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

  1. EVID_XSS_OUTPUT_POINT:响应输出点位置证据(echo/模板输出/<script>或属性/URL 上下文)
  2. EVID_XSS_USER_INPUT_INTO_OUTPUT:用户输入进入输出的证据
  3. EVID_XSS_ESCAPE_OR_RAW_CONTROL:转义/禁用转义证据(htmlspecialchars 等或 raw/raw 模式证据)

tracer 证据缺失处理(强制)

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

评论

支持 Markdown