SuperAPI AI 工具集

php-file-upload-audit

安全与审计

查看项目

更新于 10-15 10:42

技能介绍

PHP 文件上传审计(php-file-upload-audit)用于分析 PHP 项目源码中的文件上传逻辑,识别 $_FILES、move_uploaded_file 等上传入口,追踪保存目录与文件名处理方式,检测任意文件上传、路径穿越、可执行文件上传以及覆盖/同名冲突风险。

用途 该工具面向 PHP Web 源码的安全审计场景,重点覆盖文件上传相关漏洞的发现与验证。它要求先发现、后文档,执行优先级明确。

主要能力

  1. 上传入口识别:识别 $_FILES['{value}'] 字段、move_uploaded_file($_FILES['{value}']['tmp_name'], $dest)、保存路径拼接($uploadDir.$filename、sprintf、join 等)以及重命名逻辑(uniqid/random_bytes/时间戳,若 filename 仍可控仍视为高危)。
  2. 校验逻辑审计:逐点检查扩展名/白名单是否只校验后缀、扩展名解析是否存在双后缀/多点后缀绕过(如 a.php.jpg、.pHp 大小写绕过、尾部空白/Unicode 分隔符)、是否做 MIME/魔数识别(finfo_file/mime_content_type/文件头)、是否检查服务端实际内容类型与扩展名一致性、文件名净化是否去除路径分隔符与危险字符(../、\、:、空字节等)、上传目录是否在 Web 根目录及是否有执行权限控制、写入后可访问性链、上传接口鉴权。
  3. 检测风险类型:任意文件上传(任意类型/任意扩展名)、路径穿越(使用原始文件名拼接)、可执行文件上传(上传到 Web 可访问目录且未限制执行)、覆盖/同名冲突风险。
  4. 证据分层与状态判定:采用“双通道 + 证据分层”规则,高召回通道先做静态 source/sink 初筛,覆盖 HTTP 路由与非路由入口(CLI/cron/queue/include);高置信通道再用 trace/EVID 做确认与降噪。状态固定为 ✅已确认 / 🟡高概率 / ⚠️待验证 / ❌不可利用 / 🔍环境依赖。满足最小证据集(可达片段 + 可控线索 + sink 触发线索)标记 🟡高概率;满足完整 trace + EVID 标记 ✅已确认;证据不足标记 ⚠️待验证。
  5. 误报与漏报抑制:误报抑制检查硬编码覆盖、白名单生效、不可达分支、沙箱/权限边界;漏报抑制执行 trace 不全不沉默、sink-only 回退。
  6. 输出要求:最小字段包含位置、source->sink、前置条件、状态、PoC、修复;证据置信度字段输出 HIGH/MEDIUM/LOW 并给出判定依据;复核清单至少 5 项,涵盖高召回通道执行、同类扩展检查、证据集规则、source->sink 数据流链、误报抑制说明、可执行 PoC 与修复建议。

使用方式 该工具为技能型审计流程,需遵循 shared/PHP_AUDIT_EXECUTION_POLICY.md 与 shared/PHP_AUDIT_UNIFIED_STANDARD.md。执行时先做静态初筛,再按需触发 tracer:当保存路径或文件名经过多层封装函数,或校验逻辑存在分支难以确认对所有上传路径生效时,需触发 tracer。报告输出到 {output_path}/vuln_audit/upload_{timestamp}.md。漏洞条目模板强制包含位置证据、数据流链、证据引用(对应 trace 的 ## 9) Sink Evidence Type Checklist(UPLOAD 行)中的 EVID_UPLOAD_DESTPATH、EVID_UPLOAD_FILENAME_EXTENSION_PARSING_SANITIZE、EVID_UPLOAD_ACCESSIBILITY_PROOF、EVID_UPLOAD_EXEC_DISABLE_STRATEGY)、可利用前置条件、验证 PoC(含真实上传路由与 multipart 请求结构)、修复建议(白名单 + 魔数校验 + 目录隔离 + 随机化文件名 + 覆盖策略 + Webserver 执行禁用要点)。

适用场景 适用于对 PHP 项目源码进行文件上传安全审计,识别上传入口、校验逻辑缺陷与可利用性,并生成带 PoC 与修复建议的审计报告。

限制 tracer 证据缺失时,若满足最小证据集可标记 🟡高概率并注明缺失 EVID 点与补全建议;不满足最小证据集只能标记 ⚠️待验证,不得直接给出 ✅已确认可利用;满足完整证据集(全部 EVID 对齐 + 完整 trace + 分支覆盖)才可标记 ✅已确认可利用。具体安装命令、收费与价格信息暂未提供。