SuperAPI AI 工具集

php-open-redirect-audit

安全与审计

查看项目

更新于 10-15 10:41

技能介绍

用途

php-open-redirect-audit 用于分析 PHP 项目源码中所有“跳转/重定向”行为是否可能被用户控制目的地址,从而发现开放重定向漏洞。此类漏洞可用于钓鱼或将 OAuth 等流程劫持。

主要能力

  • 识别必检 Sink(强制),包括:
    • header("Location: {value}")
    • <meta http-equiv="refresh" content="{value}">
    • redirect() / to() / return redirect({value})
    • 自定义跳转函数(内部最终调用 Location 输出)
  • 可控性追踪(必做),追踪两类变量:
    • 目的地来源:通常来自 $_GET['next'] / $_POST['url'] / Referer / return_to
    • 目的地校验:是否只允许相对路径、是否 allowlist、是否拒绝 scheme(http:// / ///)、是否校验域名
  • 绕过条件识别(必做),输出潜在绕过,包括:
    • scheme 绕过://evil.com、http:%2f%2fevil.com
    • 编码绕过:双重编码、URL 编码的冒号/斜杠
    • 尾部/空白字符绕过(旧实现常见)

使用方式

该技能的审计流程与输出规则如下:

  • 分级与编号:详见 shared/SEVERITY_RATING.md;漏洞编号格式为 {C/H/M/L}-REDIR-{序号}。
  • 报告输出路径:{output_path}/vuln_audit/redir_{timestamp}.md。
  • 条目模板(强制),每条漏洞必须包含:
    • 位置证据:跳转函数位置 + 路由
    • 数据流链:用户输入 -> 校验 -> header/redirect
    • 可利用前置条件:通常需登录(若在登录后跳转)以及攻击者能否控制参数
    • 验证 PoC(必须真实路由;把目的地参数替换为真实字段名)
    • 修复建议:只允许相对路径 + 服务器端 allowlist + 对编码/scheme 做归一化后校验
  • 证据引用(强制):来自 php-route-tracer。每条开放重定向疑似漏洞必须逐项引用 trace 输出中 ## 9) Sink Evidence Type Checklist 的 REDIR 行对应证据要点(允许状态为待验证,但证据引用必须存在):
    • EVID_REDIR_OUTPUT_POINT:跳转输出点位置证据(header/redirect 的最终输出位置)
    • EVID_REDIR_DEST_SOURCE_MAPPING:目的地来源变量映射证据(从路由参数到目的地变量)
    • EVID_REDIR_DEST_VALIDATION_NORMALIZATION:目的地校验/归一化/allowlist/refuse scheme 的分支证据(含编码绕过处理分支)
  • tracer 证据缺失处理(强制):若无法定位上述 1~3 任一关键证据要点,该漏洞状态只能标记为 ⚠️待验证,不得直接给出 ✅已确认可利用。

适用场景

  • PHP Web 源码安全审计中专门排查开放重定向问题。
  • 需要对跳转目的地可控性、校验逻辑与绕过条件进行系统化追踪与分级的场景。
  • 需要输出含 PoC 与修复建议的结构化报告的场景。

限制

  • 具体收费、价格、平台与效果数据暂未提供。
  • 除资料中明确描述的 Sink、追踪项、绕过类型、报告字段与证据引用规则外,暂无其他功能或步骤说明。