CVE-2023-25727真实存在且正被利用,4.9.x系列早于4.9.11的所有版本均受影响,攻击者可通过拖放上传特制.sql文件在已登录会话中触发XSS,禁用$cfg['EnableDragDropImport']=false是最快有效缓解措施。
确认是否真在用 4.9.x 且未打补丁
4.9.11 是该系列最后一个安全更新版本,早于它的所有 4.9.x(比如 4.9.0、4.9.5、4.9.10)都受 cve-2023-25727 影响:攻击者可通过拖放上传特制 .sql 文件,在已登录会话中触发 xss。漏洞不依赖管理员权限,只要用户能访问 phpmyadmin 并启用拖放功能即可利用。
检查方法很简单:phpinfo() 或查看 ./libraries/Config.class.php 中的 $cfg['PMA_VERSION'];或直接访问 /phpmyadmin/index.php?route=/ 页面底部版权行。若显示 4.9.10 或更早,且未手动禁用拖放,则风险真实存在。
立即停用拖放功能(临时缓解)
升级不是唯一选项,但禁用是最快生效的缓解动作——因为漏洞载体就是拖放上传逻辑本身。修改配置文件 config.inc.php,加入或修改这一行:
$cfg['EnableDragDropImport'] = false;
注意变量名大小写必须完全一致,EnableDragDropImport 不是 enable_drag_drop_import(后者是旧版写法,4.9.11 已弃用)。改完后重启 Web 服务或清空浏览器缓存,再打开导入页,拖放区域将彻底消失,import.php 仅保留传统表单上传入口。
这个设置不会影响 SQL 文本粘贴、文件选择上传等其他导入方式,只是移除高危交互路径。
升级到 4.9.11 或直接跳转 5.2.2+
4.9.11 修复了拖放模块中的 XSS,但该分支已停止维护。官方明确建议:4.9.x 用户应尽快迁移到 5.2.2+,因为后者不仅修复了 CVE-2023-25727,还一并堵住了 CVE-2023-38023(CSRF)等更严重的漏洞。
升级前需验证:
-
PHP ≥ 7.4(5.2.2 不再兼容 7.2/7.3) - 扩展依赖完整:
mbstring、json、openssl、xml必须启用 - 若使用 Nginx + PHP-FPM,确认
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;未被覆盖,否则可能报 404
升级后务必测试登录、SQL 执行、数据库导出三项核心功能——有些定制主题或插件在 5.x 下会因 JS 框架变更(jQuery 升级)而失效。
为什么不能只靠输出编码“修”XSS?
这个漏洞本质不是“输出未转义”,而是服务端对上传的 .sql 文件内容解析时,错误地将其中注释块(如 --<script>alert(1)</script>)当作纯文本返回给前端,并由前端 JS 直接插入 DOM。这意味着:
-
htmlspecialchars()对响应体里已拼好的 HTML 无效——它发生在渲染之前,而漏洞发生在响应生成阶段 - 任何试图在
libraries/classes/Import/Sql.php中加strip_tags()的补丁都极可能破坏合法 SQL 导入(比如含注释的建表语句) - 反向代理或 CDN 缓存了带恶意脚本的响应页,会导致多用户持续受害
所以修复必须落在输入处理层(禁用拖放)或解析逻辑层(升级),而非输出层兜底。线上环境若仍卡在 4.9.x,禁用拖放是唯一直接有效的动作。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











