必须升级到5.2.1或更高版本才能修复CVE-2023-25727(XSS)和CVE-2023-38023(CSRF),5.0.x系列不受支持且无法通过补丁或配置绕过;需验证PHP≥7.4及mbstring、json、zip、openssl扩展,并测试搜索、注释渲染、import.php token校验三处关键场景。

必须升级到 5.2.1 或更高版本才能修复 CVE-2023-25727(XSS)和 CVE-2023-38023(CSRF)——5.0.x 系列所有版本均不受支持,且无法通过补丁或配置绕过漏洞。
确认当前版本与漏洞暴露面
登录 phpMyAdmin 页面底部查看版本号,或执行 php -r "echo file_get_contents('/usr/share/phpmyadmin/VERSION');"。若显示 5.0.2、5.0.3 或任何 5.0.x,说明:
- 拖放上传 XSS(CVE-2023-25727)必然存在,攻击者只需诱导已登录用户拖入恶意 .sql 文件即可执行任意 JS
- CSRF(CVE-2023-38023)同样存在,点击恶意链接即可触发删库、导入 SQL、改密码等操作
- 不依赖服务器端存储,纯前端触发,无日志痕迹,检测难度高
升级前必须验证 PHP 兼容性
phpMyAdmin 5.2.1+ 要求 PHP ≥ 7.4,且必须启用以下扩展:
- mbstring(非可选,用于多字节字符处理)
- json(5.2+ 默认启用 JSON 格式通信)
- zip(导出压缩包功能依赖)
- openssl(token 加密与 HTTPS 交互必需)
运行 php -m | grep -E '^(mbstring|json|zip|openssl)$' 确认全部列出;若缺失,先安装对应包(如 Debian/Ubuntu 执行 sudo apt install php-mbstring php-zip php-openssl)
替换文件时保留 config.inc.php 并校验 blowfish_secret
不要覆盖旧配置,而是复用并检查关键字段:
- 确保 /etc/phpmyadmin/config.inc.php(或你实际使用的路径)存在且权限为 640(属主 root:www-data 或 root:apache)
- 检查 $cfg['blowfish_secret'] 值长度是否 ≥32 字符;若不足,登录页会报“配置文件未保存”,需手动替换为 32 字节随机字符串(如 openssl rand -base64 32 生成)
- 删除或注释掉旧版中可能存在的 $cfg['enable_drag_drop_import'] = true; 行(新版默认禁用该功能,但残留配置可能干扰初始化)
- 升级后首次访问若提示“Token mismatch”,不是漏洞未修复,而是 session.save_path 权限错误或 session.cookie_samesite 设置为 Strict 导致 token cookie 未送达
升级后必须测试三处动态渲染场景
仅能打开登录页不等于修复完成。真实 XSS/CSRF 风险集中在用户输入参与 DOM 渲染的位置:
- 在任意表中点击「搜索」→「缩放搜索」,填入含单引号、双引号、<script> 的值,提交后观察返回 HTML 是否原样输出(应被 HTML 实体编码)
- 打开数据库结构页,查看字段「注释」内容,若注释含 JS 代码,页面不应执行(应被上下文感知编码)
- 访问 import.php 页面,抓包修改 token 参数为错误值,确认返回 403 或跳转至登录页(而非直接执行导入)
这些测试点覆盖了 CVE-2023-25727 和 CVE-2023-38023 的核心利用路径,缺一不可



















