PHP8.3 文件包含漏洞日志该怎么分析

夜强酱_9758

夜强酱_9758

2026-10-27

183人浏览

原创

PHP 8.3 本身不引入新文件包含漏洞,但应用若不当使用 include/require 仍会触发传统 LFI/RFI;分析重点是日志中路径遍历、伪协议载荷、错误提示及对应代码行,结合白名单校验与配置加固防御。

php8.3 文件包含漏洞日志该怎么分析

PHP 8.3 本身不引入新的文件包含漏洞机制,但其运行环境(如应用代码、框架、CMS)若存在不安全的 include/require 使用方式,仍会触发传统文件包含漏洞(LFI/RFI)。因此,“PHP 8.3 文件包含漏洞日志”实际是指:在 PHP 8.3 环境下运行的 Web 应用被利用文件包含漏洞时,产生的请求与错误日志。分析重点不在 PHP 版本特性,而在识别攻击痕迹、定位脆弱点、确认影响范围。


一、先确认日志来源与关键字段

重点关注三类日志:

  • Web 服务器访问日志(如 Apache access.log 或 Nginx access.log)
  • PHP 错误日志(error_log 或 php-fpm/www-error.log)
  • 应用自定义日志(如 zzcms 的 data/log/ 下操作日志)

需提取的字段包括:

  • 客户端 IP 与 User-Agent(是否含扫描器特征,如 sqlmap、dirbuster)
  • 请求方法、完整 URI 和查询参数(特别注意 ?file=, ?page=, ?p=, ?view= 等常见包含参数)
  • HTTP 状态码(200 不代表安全——LFI 成功读取 /etc/passwd 也返回 200;500/404 可能暗示路径错误或报错触发)
  • 响应体长度(异常大的响应可能含日志文件、配置文件内容)

二、识别典型攻击载荷特征

在日志中搜索以下高频模式(大小写敏感需结合实际配置):

  • 路径遍历尝试

    ?file=../../../../etc/passwd  
    ?p=%2e%2e%2f%2e%2e%2f%2e%2e%2fetc%2fshadow  
    ?view=..%2f..%2f..%2f..%2fwindows%2fsystem32%2fdrivers%2fetc%2fhosts
  • 伪协议与编码绕过

    ?file=php://filter/read=convert.base64-encode/resource=config.php  
    ?file=data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8+  
    ?file=phar://xxx.jpg/test.php
  • 日志/临时文件包含线索

    ?file=/var/log/apache2/access.log  
    ?file=/tmp/phpXXXXXX (上传临时文件名)  
    ?file=../../../../../var/lib/php/sessions/sess_abc123

⚠️ 注意:PHP 8.3 默认禁用 allow_url_include=Off,所以 RFI(如 http://evil.com/shell.txt)在默认配置下无法生效,但 LFI + 日志/Session/临时文件包含依然高发。

PHP 8.5.12
PHP 8.5.12

修复 Core bailout 状态损坏安全问题,以及 BZ2、DOM、PDO、Opcache/JIT 内存与执行错误,改进 Unicode 字素处理、URL 解析、TLS 流状态、信号分发及会话错误处理。

下载

三、关联错误日志定位真实漏洞点

单看访问日志只能发现“尝试”,需结合 PHP 错误日志确认是否成功触发包含逻辑。查找以下关键词:

  • Warning: include(): Failed opening '... → 路径不存在,但代码确实执行了 include()
  • Warning: include(): open_basedir restriction in effect → 被 open_basedir 拦截,说明路径可控
  • Warning: include(): Unable to find the wrapper "php" → 尝试伪协议失败(可能因 disable_functions 或 allow_url_fopen=Off)
  • Fatal error: Uncaught Error: Failed opening required '... → 同上,但用的是 require

若日志中出现类似:

[27-Oct-2026 10:23:41 UTC] PHP Warning:  include() [<a href="https://www.php.net/manual/en/function.include">function.include</a>]: Failed opening '/var/www/html/../data/config.php' for inclusion (include_path='.:/usr/share/php') in /var/www/html/index.php on line 42

→ 说明 index.php 第 42 行存在 $file = $_GET['p']; include($file); 类型漏洞,且未校验路径。


四、快速验证与收口建议

不是所有可疑请求都是真实攻击,需人工交叉判断:

  • ✅ 可信指标:同一 IP 短时间内高频请求不同 file= 参数 + 多个目录穿越层级 + 配合 php://filter 编码
  • ❌ 低风险信号:单次 ?file=test.php(可能是开发调试)、无路径穿越、返回 404 且无错误日志回显

应急动作建议:

  • 立即检查对应脚本(如 index.php、common.inc.php)中 include/require 调用处,是否直接拼接用户输入
  • 禁用危险函数(disable_functions = include, require, include_once, require_once, file_get_contents)仅作缓解,不能替代输入过滤
  • 强制白名单校验:
    $valid_files = ['home', 'about', 'contact'];
    $page = $_GET['p'] ?? 'home';
    if (!in_array($page, $valid_files)) { die('Invalid page'); }
    include("pages/{$page}.php");
  • 开启 log_errors=On、error_log=/var/log/php-app-errors.log,确保错误不回显到前端

日志分析本质是“行为归因”——把原始请求映射到具体代码行和业务逻辑。PHP 8.3 的严格类型、只读属性等新特性不直接影响包含漏洞,但升级后若未同步修复旧有动态拼接逻辑,反而因弃用警告被忽略而埋下隐患。

php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2023.09.01

11544

6

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

6681

5

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

2175

5

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

2023.10.23

4228

4

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

2023.10.23

4934

6

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.03

3871

9

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.09

5597

8

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.13

4382

8

sprintf函数用法详解
sprintf函数用法详解

sprintf函数的用法:1、格式化字符串;2、指定输出宽度和精度;3、返回值。更多关于sprintf函数用法详解的内容,大家可以阅读下面的文章。

2023.11.27

12302

4

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
墨刀帮助中心
墨刀帮助中心

共0课时 | 0人学习

MyEclipse学习中心
MyEclipse学习中心

共0课时 | 0人学习

Apache Subversion 官方手册
Apache Subversion 官方手册

共0课时 | 0人学习