Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
phpmyadmin-setup-validate — phpMyAdmin 5.2.3 - 高危 - 远程 - 遗留问题 - setup/validate 仍可访问 | Kitploit
工具/GitHubGitHub/abraxas/phpmyadmin-setup-validate
漏洞分析漏洞利用Web应用程序漏洞利用Web安全渗透测试实验室与实践
GitHubabraxas/phpmyadmin-setup-validate

phpmyadmin-setup-validate

phpMyAdmin 5.2.3 - 高危 - 远程 - 遗留问题 - setup/validate 仍可访问

查看仓库
4天前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Abraxas Labs - phpmyadmin-setup-validate

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  phpmyadmin-setup-validate

phpmyadmin-setup-validate

类别: SSRF 可达性: 远程

phpMyAdmin 5.2.3(标签 RELEASE_5_2_3,提交 962857e)。当 config.inc.php 存在时,setup/index.php 会终止。setup/validate.php 不会。它仍然在 $isMinimumCommon 下加载,从公开登录页面获取 CSRF 令牌,并调用 Validator::testDBConnection -> mysqli_connect,连接到 JSON values 字段中的主机、端口、用户名和密码。

未认证的客户端 GET / 获取会话 cookie 和令牌,然后 POST setup/validate.php id=Server,并附带自选的 Servers/1/host 和 Servers/1/port。phpMyAdmin 主机会向该地址发起 TCP MySQL 握手。这就是基于 MySQL 协议的 SSRF:内部 3306、针对内部服务器的凭据填充、通过时序和 mysqli 错误实现的端口探测。除非该端口上有东西说 MySQL,否则它不是 HTTP 元数据 SSRF。hide_db 还会将用户正则表达式插入 preg_match。我没有在本实验室中运行该 ReDoS 路径。

官方 phpmyadmin:5.2.3 镜像会删除 setup/。此遗留问题仅在该目录仍位于 Web 根目录时适用,这是安装后常见的遗留情况。实验室从 5.2.3 tarball 恢复 setup/,以便版本固定与 RELEASE_5_2_3 匹配。

PMASA-2016-44 / CVE-2016-6621 涵盖了一些 setup SSRF。“配置存在时禁用 setup”检查从未应用于 validate.php / config.php。

ID暂无 CVE
类别SSRF(MySQL 协议)
可达性远程(如果 setup/ 仍可通过 Web 访问,则无需认证)
CWECWE-918
CVSS高危:7.2 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N
产品phpMyAdmin
受影响版本5.2.3 标签 RELEASE_5_2_3(962857e),且 setup/ 仍位于文档根目录中
认证无需认证。CSRF 令牌来自公开登录页面。无需 MySQL 登录。
许可证GNU Affero GPL v3.0
实验室仅 127.0.0.1:19230

攻击者能做什么

任何能够访问遗留 setup/ 目录树的人,都可以让 phpMyAdmin 主机向其选择的主机和端口发起 MySQL 协议 TCP 连接。

权限方法 / 路径实验室验证或推断
从 PMA 主机向攻击者 host:port 发起 TCP 连接(出站连接完整性;对该端口的侦察)未认证 POST /setup/validate.php id=Server,附带 Servers/1/host + Servers/1/port 以及来自 GET / 的令牌实验室验证。oracle:13306 上的 oracle 记录了来自 PMA 容器的 PMA-SETUP-VALIDATE-WITNESS
确认 setup UI 已关闭而 validate 仍开启GET /setup/index.php实验室验证。响应体包含 "setup is disabled" / configuration already exists
在没有登录页面 CSRF 令牌时安全失败相同 POST,无 token实验室验证。零 oracle 命中
通过 mysqli 错误和时序实现端口 / 凭据探测相同 testDBConnection推断。在 oracle 接受后关闭后,实验室响应体为 mysqli_connect(): (HY000/2006): MySQL server has gone away
与内部 3306 进行 MySQL 通信并尝试提交的用户名/密码相同 mysqli_connect推断。未指向实验室 db 服务
通过 validateRegex 插入用户正则表达式实现 ReDoSid=Servers/1/hide_db推断。未实际测试

本实验室已排除:HTTP 元数据 SSRF(握手是 MySQL,而非 GET /latest/meta-data)、未认证 PMA 登录、OS shell 以及 setup 向导本身(index.php 保持禁用)。如果 setup/ 未部署(官方镜像默认),则 FAIL。

我是如何发现的

对 RELEASE_5_2_3 进行了八次并行源代码搜索。setup/index.php 有配置存在时的致命错误。setup/validate.php 没有。setup/lib/common.inc.php 设置了 $isMinimumCommon,并且不查找 CONFIG_FILE。

错误方向:将官方镜像视为该遗留问题(它会删除 setup/);在没有登录页面令牌的情况下 POST(零 oracle 命中);将其视为 HTTP 元数据 SSRF(握手是 MySQL)。

实验室

python3 phpmyadmin-setup-validate-Abraxas-Labs.py

或

cd lab
./run.sh

仅限回环:http://127.0.0.1:19230。Compose 项目 phpmyadmin-setup-validate。Dockerfile 从 5.2.3 tarball 恢复 setup/,并在端口 13306 上运行 TCP oracle。见证 PMA-SETUP-VALIDATE-WITNESS。

SUCCESS phpmyadmin-setup-validate how=live tcp=yes setup-index-disabled=yes PMA-SETUP-VALIDATE-WITNESS

修复方案

将 file_exists(CONFIG_FILE) 致命错误放入 setup/lib/common.inc.php,使每个 setup 脚本都终止。限制 testDBConnection 的主机。不要从用户字符串构建 preg_match 分隔符。

参考资料

  • github.com/phpmyadmin/phpmyadmin 标签 RELEASE_5_2_3(962857e)
  • setup/index.php 配置存在时的致命错误
  • setup/validate.php 没有该检查
  • libraries/classes/Config/Validator.php testDBConnection / mysqli_connect
  • 相同版本固定的遗留问题:phpmyadmin-webauthn · phpmyadmin-pmadb-central-sqli · phpmyadmin-designer-json-sqli · phpmyadmin-csrf-sql
  • CWE-918

许可证

GNU Affero GPL v3.0。参见 LICENSE。仅限回环实验室。无担保。

下载工具