phpMyAdmin如何防止任意文件读取漏洞

梦萱酱_9411

梦萱酱_9411

2026-08-09

203人浏览

原创

根本原因是phpmyadmin在导入、日志查看等功能中接收用户可控路径参数,未经校验即传给file_get_contents、include等函数,如cve-2014-8959、cve-2018-12613所示;需禁用危险功能、关闭allow_url_fopen/include、设置open_basedir、web层拦截../请求并验证防护实效。

phpmyadmin 为什么会出现任意文件读取漏洞

根本原因不是 phpmyadmin 主动“读文件”,而是它在特定功能中(比如导入、日志查看、主题加载)会接收用户可控的路径参数,再未经校验就传给 file_get_contents、include 或 load_file() 类函数。cve-2014-8959、cve-2018-12613 等都属于这类问题——攻击者构造 ?target=../../../etc/passwd 这类参数,绕过白名单逻辑触发读取。

禁用危险功能 + 限制 PHP 文件包含行为

很多任意文件读取漏洞依赖于 PHP 的动态包含机制,必须从运行时层面掐断:

  • 确认 php.ini 中 allow_url_fopen = Off 且 allow_url_include = Off —— 否则攻击者可能通过 php://filter 或远程 URL 触发读取
  • 设置 open_basedir 严格限定可访问路径,例如:open_basedir = /usr/share/phpmyadmin/:/tmp/:/var/lib/phpmyadmin/,禁止跨出该范围的任何文件操作
  • 在 config.inc.php 中显式关闭高危功能:$cfg['EnableGIS'] = false;、$cfg['ShowHint'] = false;(部分提示功能曾暴露路径)、$cfg['AllowArbitraryServer'] = false;
  • 删除或重命名 setup/ 目录——该目录历史上多次被用于构造 LFI 链,且默认权限常疏于管控

Web 服务器层拦截可疑路径参数

光靠 PHP 层过滤不可靠,攻击者常绕过前端校验直接发请求。必须在 Apache/Nginx 上做硬性规则:

btpanel phpsite 宝塔面板PHP网站
btpanel phpsite 宝塔面板PHP网站

宝塔面板 PHP 网站管理:站点创建、删除、启停、PHP 版本切换、域名管理、SSL证书管理、伪静态管理、数据库管理

下载
  • Apache:在虚拟主机配置中加入 RewriteCond %{QUERY_STRING} \.\./ [NC] + RewriteRule ^.*$ - [F,L],直接拒绝含 ../ 的请求
  • Nginx:用 location 拦截常见敏感路径:location ~* \.(htaccess|htpasswd|ini|conf|log|sh|sql)$ { return 403; }
  • 特别注意 import.php 和 export.php 的 GET 参数——这些页面常暴露 filename、output_format 等参数,需额外检查是否允许任意后缀或路径跳转

验证是否真被堵住:几个关键检查点

修复后务必手动验证,别只信配置文件写了就完事:

  • 尝试访问 /phpmyadmin/index.php?target=../../etc/passwd,应返回 403 或空白页,而非文件内容
  • 执行 SQL:SELECT load_file('/etc/passwd'); —— 如果返回内容,说明数据库用户权限过大,不是 phpMyAdmin 问题,而是 MySQL 层未限制 secure_file_priv
  • 检查 error_log 是否仍有 Warning: file_get_contents(../) 类报错,有则说明某处逻辑仍存在未修复的路径拼接
  • 确认 config.inc.php 本身不能被 HTTP 直接访问(例如通过 /phpmyadmin/config.inc.php),否则所有加固都白搭

最易被忽略的是 open_basedir 和 Web 服务器路径规则的匹配精度——写错一个斜杠或漏掉实际部署路径前缀,整个防护就形同虚设。

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

相关文章

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

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

下载

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

相关专题

更多
常用的mysql管理工具
常用的mysql管理工具

常用的mysql管理工具有:1、MySQL Workbench、phpMyAdmin、MySQL Shell、Navicat、DBeaver和DataGrip。更多关于mysql管理工具的问题,详情请看本专题下面的文章,php中文网欢迎大家前来学习。

2023.11.03

5270

11

phpmyadmin导入sql文件失败怎么办
phpmyadmin导入sql文件失败怎么办

在phpmyadmin导入sql文件失败时,可以尝试以下解决方案:1、检查文件权限和格式;2、确保文件字符集与数据库兼容;3、确认表结构兼容;4、检查外键约束和禁用外键检查;5、增加最大上传文件大小;6、分批导入或使用命令行导入;7、联系托管提供商寻求帮助。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.02

3044

7

phpmyadmin怎么改成中文
phpmyadmin怎么改成中文

通过安装中文语言包、将其上传到 phpmyadmin 目录、修改配置文件和重启 phpmyadmin,可以将 phpmyadmin 的界面改为中文。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.07

701

5

phpmyadmin访问不了怎么回事
phpmyadmin访问不了怎么回事

phpmyadmin 无法访问可能是以下原因造成:1、服务器问题:mysql 服务未运行或防火墙阻止访问;2、配置问题:安装/配置错误、错误的配置文件设置或缺少必要的 php 扩展;3、浏览器问题:浏览器缓存、扩展干扰或浏览器不兼容;4、其他原因:dns 问题、恶意软件或网络连接问题。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.07

819

6

phpMyAdmin安装教程大全
phpMyAdmin安装教程大全

本专题整合了phpMyAdmin程序安装相关教程,阅读专题下面的文章了解更多详细内容。

2025.10.31

825

23

PHPMyadmin配置
PHPMyadmin配置

本专题整合了phpmyadmin配置相关教程,阅读专题下面的文章了解更多详细步骤。

2025.12.04

489

19

XAMPP 与 phpMyAdmin 数据库管理实操
XAMPP 与 phpMyAdmin 数据库管理实操

专注于 XAMPP 内置的 phpMyAdmin 数据库管理工具,系统讲解数据库和数据表的创建与设计、SQL 语句执行、CSV/SQL 格式数据的导入导出、定时备份与一键还原、多数据库批量管理等日常操作,帮助开发者高效管理本地 MySQL 数据。

2026.04.08

315

26

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

2026.09.30

60

10

LLVM RISC-V参数配置教程
LLVM RISC-V参数配置教程

本专题介绍LLVM对RISC-V基础ISA和扩展的支持方式,涵盖RV32、RV64、标准扩展、实验性扩展、厂商扩展、-menable-experimental-extensions和版本差异。

2026.09.30

40

14

热门下载

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

精品课程

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

共0课时 | 0人学习

MyEclipse学习中心
MyEclipse学习中心

共0课时 | 0人学习

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

共0课时 | 0人学习