phpMyAdmin默认路径包括/phpmyadmin/、/pma/、/phpMyAdmin/、/mysql/及带版本号路径;敏感接口为import.php、export.php、sql.php、tbl_sql.php;WAF需基于原始URI匹配,聚焦sql_query等参数做语义级检测,禁用全局POST拦截,限制body大小并校验token有效性。
phpMyAdmin 的默认路径和敏感接口有哪些
waf 规则要起效,得先知道攻击者实际打哪儿。phpmyadmin 常见入口不是只有 /phpmyadmin/,还有 /pma/、/phpmyadmin/(大小写混用)、/mysql/ 甚至带版本号的 /phpmyadmin4.9.0.1/。这些路径在日志里高频出现,但 waf 默认规则往往只覆盖主路径。
更关键的是后端敏感接口:攻击者常直接 POST 到 import.php、export.php、sql.php、tbl_sql.php,绕过登录页直击功能点。如果 WAF 只拦登录页,这些请求根本不会触发防护。
- 必须把所有常见别名路径都加进规则匹配范围,用正则如
^/(phpmyadmin|pma|phpMyAdmin|mysql)/.*$ -
import.php和export.php是 SQL 注入与文件上传双高危点,建议单独设规则,不依赖路径前缀 - 注意 Apache 的
Alias或 Nginx 的alias配置可能导致真实路径和 URL 路径不一致,WAF 规则应基于原始请求 URI 匹配,而非后端重写后的路径
如何拦截 phpMyAdmin 的典型 SQL 注入特征
单纯封 union select 或 sleep( 这类关键词太容易被绕过——攻击者用大小写混写、URL 编码、注释符分隔,比如 uNIon%20/*a*/selECT 就能逃过基础关键字过滤。
真正有效的做法是结合上下文做语义级识别:只在 phpMyAdmin 相关路径 + POST 请求 + sql_query 或 import_text 参数中检测可疑模式,避免误杀正常管理操作。
- 优先匹配参数名:
sql_query、import_text、show_query、where_clause,再对值做正则扫描 - 用 PCRE 模式匹配嵌套括号、多层注释、base64 编码痕迹(如
base64_decode\(|eval\(base64_decode) - 禁用全局 SQL 注入规则对 phpMyAdmin 路径的“兜底拦截”,否则会干扰合法的大 SQL 导入(如建库脚本),改用精准参数级规则
为什么不能直接封掉 phpMyAdmin 的全部 POST 请求
封死所有 POST 就等于废掉整个工具——创建表、执行查询、导入数据全靠 POST。WAF 不是防火墙,它该放行合法操作,而不是用暴力手段“一锅端”。
更隐蔽的问题是:部分 WAF 在开启“POST 参数长度限制”时,会截断长参数再做检测,导致 import_text 中的恶意 payload 被切碎,绕过规则。而 phpMyAdmin 自身对超长 SQL 有分片处理机制,攻击者恰好利用这点做拆分注入。
- 限制单个参数长度不如限制整个 POST body 大小(如 20MB 内合理),并确保 WAF 解析时不丢数据
- 对
import.php入口,可额外校验token参数是否有效且未过期,无效 token 的 POST 直接拦截——比纯内容检测更可靠 - 留意 PHP 的
max_input_vars和 WAF 的解析深度是否一致,否则可能漏检深层嵌套参数中的 payload
绕过 WAF 的常见手法及对应加固点
攻击者早就不硬刚规则了。他们用空字节 %00 截断 WAF 解析、用 data:// 协议加载远程 payload、或通过 phpMyAdmin 自带的“服务器变量”功能动态拼接语句——这些行为本身不带传统攻击特征,但落地就是 RCE。
这类绕过往往发生在 WAF 对协议头、编码方式、MIME 类型支持不全时。比如 WAF 只检查 application/x-www-form-urlencoded,却放行了 multipart/form-data 中藏在文件字段里的恶意 SQL。
- 强制要求 phpMyAdmin 接口只接受
Content-Type: application/x-www-form-urlencoded,其他类型直接 403 - 对
data://、php://filter、phar://等伪协议字符串,在所有参数值中统一拦截,不区分接口 - 禁用 phpMyAdmin 的
$cfg['AllowArbitraryServer'] = true配置,否则攻击者可通过构造恶意server参数触发 SSRF,WAF 很难覆盖这种间接调用链
最麻烦的是,phpMyAdmin 的 session token 和 CSRF token 生成逻辑在前端 JS 里也有副本,攻击者可离线伪造。所以光靠 token 校验不够,得配合服务端二次验证 + 时间窗口控制。这点容易被忽略,但恰恰是绕过防护的最后一公里。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











