phpmyadmin信息泄露

 人参与 | 时间:2026-10-17 07:29:51

2023年夏天,信息泄露我帮一个做外贸的信息泄露朋友检查服务器。他网站流量不大,信息泄露但每月账单里总有一笔奇怪的信息泄露境外带宽消耗。登上服务器一看,信息泄露/var/log/nginx/access.log 里全是信息泄露针对 phpMyAdmin 的扫描记录——每分钟几十条,来自全球各地。信息泄露更麻烦的信息泄露是,他图省事,信息泄露把 phpMyAdmin 直接放在网站根目录下,信息泄露路径就是信息泄露 /phpmyadmin/。这等于把数据库管理入口挂在了大门口。信息泄露

phpMyAdmin 的信息泄露信息泄露,很多时候不是信息泄露漏洞本身,而是信息泄露配置失误。最常见的一种:安装后没删 setup 目录。访问 /phpmyadmin/setup/ 能直接进入配置界面,虽然多数版本会要求登录,但有些旧版本或配置不当的实例,会暴露数据库主机、端口、甚至部分配置参数。我见过一个案例,某小型电商站点的 phpMyAdmin setup 页面没锁,攻击者通过它拿到了数据库地址,然后配合弱口令爆破,两小时就拖走了用户表。

另一个高频泄露点是版本号。phpMyAdmin 的登录页、文档页、甚至 changelog.php 都会明确显示版本。别小看这个。攻击者拿到版本号,直接去搜对应版本的 CVE。比如 4.8.1 之前的版本存在文件包含漏洞,2.x 时代有 XSS 和 SQL 注入。知道版本,等于拿到了攻击路线图。我见过有人把 phpMyAdmin 的版本信息藏在 HTTP 响应头里,其实一样能读到——X-Powered-By 或者 Set-Cookie 里的路径特征都会出卖你。

配置文件泄露更隐蔽。有些管理员备份时把 config.inc.php 重命名为 config.inc.php.bak 或 config.inc.php~,放在同一目录。Web 服务器如果没配好,直接就能下载。这个文件里有什么?数据库用户名、密码、主机地址,有时候还有 blowfish_secret。拿到这些,基本等于拿到了数据库钥匙。我测试过一批暴露的 .bak 文件,十个里有三个能直接读出明文密码。原因很简单:phpMyAdmin 的配置文件默认就是明文存储凭据。

还有一种情况是日志泄露。phpMyAdmin 本身不产生访问日志,但如果服务器配置不当,/var/log/ 下的文件能被 Web 访问,或者 phpMyAdmin 的 tmp 目录没设权限,里面可能残留 SQL 查询记录。我见过一个论坛,phpMyAdmin 的 tmp 目录可列目录,里面有个 recent.sql 文件,包含最近执行的查询,其中一条是 INSERT INTO users 的语句,密码字段是明文。攻击者不需要破解,直接读就行。

怎么防?第一,别用默认路径。把 phpmyadmin 改成 myadmin2024 之类的,虽然不能根治,但能挡掉 90% 的自动化扫描。第二,装完立刻删 setup 目录,或者至少用 .htaccess 限制 IP。第三,配置文件权限设成 440,属主是 Web 用户,别让其他用户读。第四,关掉版本显示,在 config.inc.php 里加 $cfg['ShowPhpInfo'] = false; 和 $cfg['ShowServerInfo'] = false;。第五,最彻底的办法——别把 phpMyAdmin 暴露在公网。用 SSH 隧道,或者只允许内网 IP 访问。我自己的服务器上,phpMyAdmin 只监听 127.0.0.1,需要时用 ssh -L 转发,麻烦一点,但省心。

最后说个真实教训。去年有个客户,phpMyAdmin 版本是 4.0.10,放在 /pma/ 目录下,没改路径,没删 setup,config 文件权限 644。攻击者通过 setup 页面拿到数据库地址,用 sqlmap 跑出 root 密码是 123456。整个库被清空,还留了勒索信。他后来跟我说,以为 phpMyAdmin 只是个工具,没人会注意。事实是,互联网上每时每刻都有机器人在扫 /phpmyadmin/、/pma/、/mysql/、/dbadmin/。你的疏忽,就是别人的入口。

顶: 888踩: 9137