最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
如何彻底移除phpMyAdmin中的setup安装文件夹以防配置被篡改?
时间:2026-07-02 11:14:46 编辑:袖梨 来源:一聚教程网
必须从服务器层彻底阻断 /setup 路径处理,仅删目录或改权限无法防止攻击者利用解析漏洞执行PHP文件;Apache需用<Directory>精确拒绝,Nginx需用location = 精确匹配并返回404。
直接删掉 /setup 目录不保险,攻击者仍可能通过 web 服务器解析漏洞或残留配置访问其中的 php 文件(比如 /setup/lib/common.inc.php),必须从服务器层彻底阻断路径处理。
为什么不能只删目录或改权限
常见错误现象:https://your-site.com/phpmyadmin/setup/ 返回 404 但日志里仍有大量 GET 请求;或者页面打不开,却能用 curl 绕过直接请求 /setup/index.php?step=2 触发逻辑。这是因为:
- Apache/Nginx 仍会尝试解析该路径下的 PHP 文件,只要目录存在且 PHP 模块启用,就可能执行
-
chmod 644或重命名只是让文件不可执行,但 Web 服务器仍可读取、返回源码(尤其当php_flag engine off未生效时) - 某些一键包(如 AMPPS)默认给
/setup开启了AllowOverride All,.htaccess规则反而被绕过
Apache 下必须用 <Directory> 粗暴拒绝
推荐写法(放入虚拟主机配置,非 .htaccess):
<Directory "/usr/share/phpmyadmin/setup"> Require all denied</Directory>
关键点:
- 路径必须和实际安装路径完全一致(查
ls -l /etc/apache2/conf-enabled/确认符号链接指向) - 不能写成
Deny from all(旧版 Apache 语法,新版已废弃) - 不要依赖
RewriteRule返回 404——它只拦 GET/POST,OPTIONS 或 HEAD 仍可能穿透
Nginx 必须用 location = 精确匹配
错误写法:location /phpmyadmin/setup(前缀匹配,会误杀 /phpmyadmin/setup_xxx)或 location ~ ^/phpmyadmin/setup(正则开销大且易漏)
立即学习“PHP免费学习笔记(深入)”;
正确写法(放入 server 块内):
location = /phpmyadmin/setup { return 404;}location = /phpmyadmin/setup/ { return 404;}
注意:
- 如果 phpMyAdmin 部署在子路径(如
/pma),必须同步改成location = /pma/setup - 不要用
deny all——Nginx 不支持该指令,配置会直接报错 - 加第二行
/phpmyadmin/setup/是为了拦截末尾带斜杠的请求,否则可能被自动重定向绕过
删目录前先确认你真不需要 setup 向导
如果你后续要手动调整 config.inc.php(比如新增多服务器配置、切换认证方式),删光 /setup 就只能靠手写或临时恢复备份。更稳妥的做法是:
- 先按上述规则屏蔽访问
- 保留目录但清空所有 PHP 文件:
sudo find /usr/share/phpmyadmin/setup -name "*.php" -delete - 仅留空壳目录 +
index.html(内容为<h1>Disabled</h1>),既防扫描又留退路
真正危险的不是目录存在,而是服务器还允许执行其中任意 PHP 脚本——这点最容易被忽略,也最常被 PoC 利用。
相关文章
- 刀剑缭乱2026公测兑换码大全一览 07-05
- 崩坏星穹铁道4.0卡池7个新角色一览 07-05
- 明日方舟终末地开服工业蓝图一览 工业蓝图作用与使用思路解析 07-05
- 原神梦之树怎么开启 梦之树开启条件 07-05
- 帕瓦勇者传说持续伤害阵容搭配推荐 07-05
- 明日方舟:终末地全新玩法 蚀像寻遗怎么玩介绍 07-05