CVE-2023-25727是phpMyAdmin 5.1.x中拖放导入功能的XSS漏洞,因.sql文件名或内容未转义渲染导致JS执行;影响版本为5.1.x < 5.2.1,唯一修复方式是升级至5.2.1+,临时缓解需在config.inc.php中设$cfg['EnableDragDropImport'] = false。
phpMyAdmin 5.1拖放上传触发的XSS漏洞(CVE-2023-25727)
该漏洞存在于拖放导入功能中,攻击者上传特制的 .sql 文件后,文件名或内容被未经转义地渲染到页面,导致 javascript 执行。影响范围是 5.1.x 中所有低于 5.2.1 的版本——5.2.1 是官方唯一修复此问题的版本,无单独补丁可用。
禁用拖放功能是最直接有效的临时缓解措施
如果你无法立即升级,必须立刻关闭该功能入口。修改 config.inc.php,添加或更新以下配置项:
$cfg['EnableDragDropImport'] = false;
注意大小写:EnableDragDropImport(不是 enable_drag_drop_import,后者是旧版 4.x 的写法)。该配置生效后,前端界面将完全隐藏拖放区域,且后端不再解析相关请求参数,从源头切断攻击链。
常见错误现象:配置后仍能拖放,说明你改错了文件(应是部署根目录下的 config.inc.php,而非 libraries/config.default.php);或 Web 服务器缓存了旧的 JS 资源,需清空浏览器缓存并硬刷新(Ctrl+Shift+R)。
升级到 5.2.1+ 是唯一彻底修复方式
5.2.1 不仅修复了拖放 XSS,还同步修补了多个关联风险点,包括:import.php 中对 SQL 文件内容的输出编码、navigation.js 对数据库/表名的 HTML 转义、以及 tbl_structure.php 中字段注释的渲染逻辑。
立即学习“PHP免费学习笔记(深入)”;
升级前务必确认:
- PHP 版本 ≥ 7.4(5.2.1 不再支持 PHP 7.2 或更低版本)
- MySQL/MariaDB 客户端库兼容性(如使用 mysqlnd,建议 ≥ 8.0.22)
- 备份当前
config.inc.php和自定义主题/插件,因 5.2.x 对$cfg['ThemeDefault']和$cfg['Servers'][$i]['auth_type']的校验更严格
升级后,检查是否仍有残留的旧 JS 文件被加载(如通过浏览器开发者工具 Network 标签页查看 import.js 请求路径),避免 CDN 或反向代理缓存了旧资源。
绕过升级的代码层加固(仅限紧急场景)
若因环境限制完全无法升级,可在 import.php 入口处手动加固关键输出点。重点修改两处:
定位到 import.php 中类似 echo $filename; 或 printf('%s', $message); 的语句,全部替换为:
echo htmlspecialchars($filename, ENT_QUOTES, 'UTF-8');
同时搜索 echo $message,确保所有用户可控字符串(如 $_FILES['import_file']['name']、$_POST['sql_query'] 的展示部分)都经过 htmlspecialchars() 处理。不要依赖 JS 层的 textContent 替代,因为攻击可绕过 DOM 渲染直接触发 onerror 等事件属性。
这个做法治标不治本:它无法覆盖所有 XSS 可能路径(如主题模板中的未过滤变量),且每次 phpMyAdmin 小版本更新都会冲掉修改。所以它只适合“撑到下周就能升级”的临时状态。
真正容易被忽略的是:即使关了拖放、升了级,如果管理员仍用弱密码或允许公网访问,XSS 漏洞的利用门槛会大幅降低——因为攻击者只需先诱导登录,再触发 XSS,而不是直接突破认证。安全从来不是单点修复的事。



















