如何修复phpMyAdmin由于未授权访问导致的Setup脚本执行漏洞?

因为phpMyAdmin的setup/目录默认无访问控制,宝塔7.4.2版本在/pma路径下硬链接了含setup的完整实例,且未做认证拦截,导致http://ip:888/pma/setup/可被任意直接访问执行。

为什么访问 /phpmyadmin/setup 会直接执行而无需登录?

因为 phpmyadmin 的 setup/ 目录默认未做访问控制,只要 web 服务器能解析 php,该目录下所有脚本(如 index.phpsave.php)就会被直接执行。攻击者通过 http://your-ip/phpmyadmin/setup/ 就能进入配置向导,生成或覆盖 config.inc.php,进而写入恶意配置(如 $cfg['servers'][$i]['host'] = 'evil.com';),甚至触发反序列化链。

宝塔面板中 /pma 路径暴露 setup 的真实风险点

宝塔 7.4.2 版本在 /www/server/phpmyadmin/PMA/ 下硬链接了完整 phpMyAdmin 实例,且未禁用 setup/ 目录 —— 这意味着 http://ip:888/pma/setup/ 可被任意访问。这不是“没关权限”,而是目录本身被有意暴露且无认证拦截。

  • 该路径不依赖用户是否登录宝塔,也不校验 session 或 cookie
  • 即使你没手动启用 phpMyAdmin,宝塔更新后自动生成的 PMA/ 目录就已包含可执行的 setup/
  • setup/ 生成的配置文件若未设权限(如 644),可能被后续 LFI 漏洞读取(参考 CVE-2022-44898)

彻底禁用 setup 的三步实操(非简单删目录)

只删 setup/ 文件夹不行:新版 phpMyAdmin 的 index.php 仍会尝试加载 libraries/setup.lib.php,缺失时可能报错或降级行为;更重要的是,宝塔下次升级可能重建该目录。

  • 在 Nginx 配置中显式屏蔽:location ^~ /phpmyadmin/setup/ { return 403; }(宝塔用户编辑 /www/server/panel/vhost/nginx/phpmyadmin.conf
  • 确认 setup/ 目录权限为 000 或属主非 Web 用户:chmod -R 000 /www/server/phpmyadmin/setup
  • 检查并删除任何软链接指向 setup 的路径,例如宝塔旧版残留的 /www/server/phpmyadmin/PMA/setup -> /usr/share/phpmyadmin/setup

修复后必须验证的两个隐蔽环节

很多人改完配置就认为安全了,但以下两点不验证等于白做:

  • 用 curl 测试:curl -I http://localhost/phpmyadmin/setup/ 必须返回 403 Forbidden,而非 200 OK302 Found
  • 检查 PHP 错误日志:tail -f /www/wwwlogs/phpmyadmin.error.log,确认没有 Warning: include(setup/lib.php) 类报错 —— 这说明仍有代码路径试图加载 setup 组件

setup 目录不是功能入口,而是配置后门;它的存在本身就意味着风险敞口,而不是“不用就没事”。

立即学习“PHP免费学习笔记(深入)”;

文章来自机圈观察员网,发布者:,转载请注明出处:https://www.jqgcy.com/shoujipingce/112581.html

天玑与骁龙(对比分析天玑和骁龙处理器的耐用性,探寻耐用性较佳的处理器。)
上一篇 2026-06-25 17:31
解决oppo手机云服务密码遗忘的方法(忘记oppo手机云服务密码?别担心,这里有解决方法!)
下一篇 2026-06-25 17:31

相关推荐