SuperAPI AI 工具集

php-file-read-audit

安全与审计

查看项目

更新于 10-15 10:41

技能介绍

PHP 任意文件读取审计(php-file-read-audit)面向 PHP 项目源码,用于识别文件读取与包含执行风险,包括路径穿越导致的任意文件读取、包含任意文件(include/require)导致的信息泄露或代码执行(当包含内容可执行或受流包装器影响)。

用途:对 PHP Web 源码进行安全审计,定位任意文件读取与路径穿越类漏洞,并结合数据流追踪给出可利用性分级、PoC 与修复建议。

漏洞编号:{C/H/M/L}-FILE-{序号}。分级与编号规则详见 shared/SEVERITY_RATING.md。

FILE Sink(必做):识别以下函数/语法。 读数:file_get_contents、readfile、fopen、stream_get_contents、file、Storage::get。 包含:include、require、include_once、require_once(路径拼接风险尤其高危)。 压缩/归档:ZipArchive->open(若路径可控)。 流包装/过滤:php://filter、php://input(若被作为文件内容读取或包含)。 危险:当 allow_url_fopen 或 allow_url_include 或 wrapper 允许时,读取或包含可跨协议。 危险模式:读取或包含路径变量直接来自用户输入;路径拼接未做规范化与 basePath 校验;允许 file://、php://、data://、zip:// 等流包装且未限制;在 include/require 场景存在 allow_url_include=On 或通过配置/封装间接开启网络或跨协议 include 的证据。

路径穿越检测(必做):分析并给出证据,包括是否过滤 ../、..\、混合分隔符;是否做 realpath/canonicalize 并用 basePath 校验前缀;是否处理流包装器前缀 php://、file://、phar://、zip:// 等(逐项证据化);编码、双重编码、大小写、尾部空格、\0(旧版本 PHP)绕过可能性;是否对后缀或扩展名做白名单且不易绕过。

包含执行判定(强制,提升真阳性):当检测到 include/require* 使用可控路径时,必须输出判定证据,包括包含内容类型(是否可能被当作 PHP 代码执行,如扩展名、解析方式、执行路径证据);包含路径的最终解析结果(wrapper 解析后是否仍指向可控资源);执行面边界(include/require 是否位于异常处理、return/throw 分支之后,即使能读也可能不执行);配置证据(是否存在 allow_url_include=On,或 auto_prepend_file/auto_append_file,或自定义封装对 include 的放行点)。

tracer 触发条件(必做):路径经过多层函数或 JSON 字段传递;存在分支且校验逻辑只在某路径分支生效。

报告输出:输出到 {output_path}/vuln_audit/file_{timestamp}.md。

漏洞条目模板(强制):必须包含位置证据;数据流链(Source→Sink,含路径拼接与校验分支);证据引用(来自 php-route-tracer 输出,必须逐项引用,对应 trace 的 ## 9) Sink Evidence Type Checklist(FILE 行)中的证据要点):EVID_FILE_WRAPPER_PREFIX(wrapper/流包装前缀,如 php://、phar://、zip:// 等)、EVID_FILE_RESOLVED_TARGET(final/resolved target,wrapper 解析后的最终目标)、EVID_FILE_INCLUDE_REQUIRE_EXEC_BOUNDARY(include/require 执行面边界,是否会执行 PHP 代码 vs 仅读取内容或报错,该证据点也可包含与 allow_url_include/封装放行相关的证据);可利用前置条件(鉴权、输入可控性、触发条件);可执行 PoC(HTTP 请求,含真实路由);建议修复(basePath 校验、流包装禁用策略、include/require 的安全替代要点、代码搜索语句)。

tracer 证据缺失处理(强制):若 trace 的 ## 9) Sink Evidence Type Checklist(FILE 行)中任一关键证据要点缺失或无法对应到本条漏洞,该条漏洞状态必须为 ⚠️待验证,不得直接给出 ✅已确认可利用。

适用场景:PHP Web 源码安全审计、文件读取与包含类漏洞排查、路径穿越风险验证、include/require 可控路径的可执行性判定。

限制:工具依赖源码与 tracer 证据,缺失关键证据时仅能给出待验证状态;具体安装方式、运行命令、收费与价格信息暂未提供。