怎么防范通过phpMyAdmin上传WebShell_禁止into outfile权限

phpMyAdmin 能用 INTO OUTFILE 写 WebShell,因 MySQL 允许将 SELECT 结果写入服务器文件系统,配合空字符串语句可生成木马;需同时具备 FILE 权限且 secure_file_priv 配置不当。phpMyAdmin 为什么能用 INTO OUTFILE 写 WebShell因为 mysql 的 into outfile 允许把查询结果直接写入服务器文件系统,配合 select '<?php eval(_post\[1\]);?\>' 这类语句,就能生成一句话木马。只要攻击者有数据库账号(哪怕只有 select 权限),且 mysql 配置了 secure_file_priv 为空或指向 web 可访问目录,就可能成功。禁用 INTO OUTFILE 的三个实际操作点光在 phpMyAdmin 界面里删权限没用,得从 MySQL 层面切断能力:回收用户 FILE 权限:执行 REVOKE FILE ON \*.\* FROM 'username'@'%';;仅靠 DROP 或 INSERT 权限无法绕过此限制设置 secure_file_priv 为 NULL 或只读路径:在 my.cnf 中加 secure_file_priv = /tmp/(确保该路径不可执行、不在 Web 根目录下);设为 secure_file_priv = "" 是危险的,MySQL 8.0+ 已不支持空值重启 MySQL 生效:修改配置后必须重启服务,SET GLOBAL secure_file_priv = ... 在运行时不可更改phpMyAdmin 侧还要关掉哪些功能即使 MySQL 层禁了 INTO OUTFILE,phpMyAdmin 自身的导出功能也可能被滥用(比如导出为 CSV 后改后缀上传):在 config.inc.php 中禁用危险导出格式:cfg'Export''disable_mime' = true;,并移除 php、sql(若非必要)等导出选项关闭「保存到服务器」功能:cfg\['SaveDir'\] = '';,避免用户把导出文件存到 Web 目录检查 cfg'UploadDir' 是否为空或指向非 Web 路径;若启用,确保该目录无执行权限(如 chmod 755 且不配 PHP 解析)验证是否真禁掉了 INTO OUTFILE别信配置文件改了就完事,登录 MySQL 命令行亲自试一句:SELECT 'test' INTO OUTFILE '/tmp/test.txt';如果返回 ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement 或 ERROR 1045 (28000): Access denied for user ... (using password: YES),说明生效;如果写入成功,说明 FILE 权限还在或 secure_file_priv 没生效。 Fotor AI Image Generator Fotor 平台的 AI 图片生成器

相关推荐
浦信仿真大讲堂1 小时前
从重复操作到自动化闭环:如何让 CST 与 Python 真正协同起来
python·自动化·cst·仿真软件·达索软件
Gu Gu Study2 小时前
ScoutLoop开放域深度研究引擎(agent的初步设计想法)
人工智能·python
神龙天舞20012 小时前
MySQL 备库为什么会延迟好几个小时
android·数据库·mysql
卷无止境3 小时前
写代码这件事,到底该讲究点什么?
后端·python
卷无止境3 小时前
循环复杂度到底在算什么,Python 代码怎么才能写得让人一看就懂
后端·python
lpfasd1233 小时前
MediaCrawler 项目深度分析
chrome·python·chrome devtools
丙氨酸長鏈3 小时前
Web前端入门第 问:JavaScript 一个简单的 IndexedDB 数据库入门示例
前端·javascript·数据库
Dxy12393102163 小时前
Python项目打包成EXE完整教程(PyInstaller实战避坑)
开发语言·python
bamb004 小时前
一个项目带你入门AI应用开发01
python
独行侠影a4 小时前
APScheduler+Redis 分布式定时任务:解决多实例任务重复执行
数据库·redis·分布式