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

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

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

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
phpmyadmin-auth-plugin-unquoted — phpMyAdmin 5.2.3 - 高危 - 远程 - SQL注入 - 认证插件标识符未加引号 | Kitploit
工具/GitHubGitHub/abraxas/phpmyadmin-auth-plugin-unquoted
漏洞扫描器漏洞分析漏洞利用Web应用程序漏洞利用Web安全渗透测试数据库安全
GitHubabraxas/phpmyadmin-auth-plugin-unquoted

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →

phpmyadmin-auth-plugin-unquoted

phpMyAdmin 5.2.3 - 高危 - 远程 - SQL注入 - 认证插件标识符未加引号

查看仓库
269天前尚未审核
分享

Abraxas Labs - phpmyadmin-auth-plugin-unquoted

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  phpmyadmin-auth-plugin-unquoted

技术分析文章:https://abraxaslabs.tech/research/phpmyadmin-auth-plugin-unquoted

phpmyadmin-auth-plugin-unquoted

类别: SQLi 可达性: 远程

phpMyAdmin 5.2.3(RELEASE_5_2_3 / 962857e)- phpMyAdmin

修改密码功能默认开启。UserPassword.php 将 POST 的 authentication_plugin 直接复制进 ALTER USER ... IDENTIFIED WITH,既没有允许列表,也没有加引号。同一条语句中的用户名、主机和密码都经过 escapeString 处理。在 MySQL 8 上,当提交的插件与当前插件不同时,会生成 WITH 子句。

已登录的 phpMyAdmin 用户可以通过修改密码表单,向自己的 ALTER USER 语句注入 SQL。插件字段中的额外 SQL 会被当作 SQL 执行,而不是插件名。

ID暂无 CVE
类别SQLi
可达性远程(已认证的 cookie 登录;修改密码功能开启)
CWECWE-89
CVSS高危:8.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
产品phpMyAdmin
受影响版本5.2.3 标签 RELEASE_5_2_3(962857e4f63d42e38f11ff4d63f5e722018add76)
认证已认证的 cookie 登录。$cfg['ShowChgPassword'] 默认为 true。认证类型不是 config
许可证GNU Affero GPL v3.0
实验环境仅 127.0.0.1

攻击者能做什么

已登录的 phpMyAdmin 用户可以通过修改密码表单,向自己的 ALTER USER 语句注入 SQL。

权限方法 / 汇聚点侦察 / 完整性 / 可用性实验验证或推断
在 IDENTIFIED WITH 中发送额外 SQLPOST index.php?route=/user-password,参数 authentication_pluginphpMyAdmin 所构建语句的完整性实验验证。原始 POST sha256_password /*PMA-AUTH-PLUGIN-UNQUOTED-WITNESS*/ 在 SQL 框中以未加引号的形式出现
让 MySQL 将额外 SQL 解析为 SQL同一条语句到达 mysqld用户连接的完整性实验验证。通用日志保留了插件 sha256_password,并丢弃了注释。返回 1227,因为该用户没有 CREATE USER 权限
若突破成功解析,可添加额外子句或额外账户同一汇聚点;堆叠查询取决于驱动其他账户的完整性推断。本实验未执行第二条语句,也未创建其他账户
在添加/编辑用户时存在相同的拼接Privileges.php 的 IDENTIFIED WITH / MariaDB 的 VIA授权者构建语句的完整性推断的同类问题。实验中的 POST 仅涉及修改密码

此路径上已排除:未认证使用(需要 cookie 登录)、config 认证(修改密码被隐藏)、RCE、在 MySQL 8 上无 GRANT 的插件更改成功(无 CREATE USER 时返回 1227)。用户名、主机和密码仍被转义。修改自己的密码不需要 GRANT;遗留问题是未加引号的插件字段,而不是可自由替换插件。

同一版本固定点:WebAuthn CustomServer 遗留问题。

我是如何发现的

我固定了 phpmyadmin/phpmyadmin RELEASE_5_2_3。PMASA-2025-1/2/3 已包含在 5.2.2 中。修改密码功能仍然构建:

return 'ALTER USER \'' . $dbi->escapeString($username)
    . '\'@\'' . $dbi->escapeString($hostname)
    . '\' IDENTIFIED WITH ' . $authPlugin . ' BY '

$authPlugin 就是 $_POST['authentication_plugin']。MySQL 5.7.37+ 和 8.0 除非插件发生变化,否则会省略 WITH。POST 一个不同的名称,该子句就会重新出现。

已记录的弯路:把 MySQL 1227 当作残留内容导致的失败(它恰恰证明额外 SQL 已被解析);声称在 MySQL 8 上无需 GRANT 即可更改插件;把 config-auth 视为范围内;一个反向 shell。纯属作秀。

实验环境

python3 phpmyadmin-auth-plugin-unquoted-Abraxas-Labs.py
# or: cd lab && ./run.sh

仅针对 http://127.0.0.1:19260。镜像 phpmyadmin:5.2.3 和 mysql:8.0。Compose 项目 phpmyadmin-auth-plugin-unquoted。运行结束后栈会被拆除。

以 appuser 身份通过 Cookie 登录。向 /user-password 发送 POST 请求,携带 authentication_plugin=sha256_password /*PMA-AUTH-PLUGIN-UNQUOTED-WITNESS*/。PMA SQL 查询框:ALTER USER 'appuser'@'%' IDENTIFIED WITH sha256_password /*PMA-AUTH-PLUGIN-UNQUOTED-WITNESS*/ BY '***'。MySQL 通用日志解析该注释并存储为 IDENTIFIED WITH 'sha256_password'。用户名被引号包裹。

SUCCESS phpmyadmin-auth-plugin-unquoted how=live unquoted=yes escaped-user=yes plugin=sha256_password PMA-AUTH-PLUGIN-UNQUOTED-WITNESS

修复方案

从 SHOW PLUGINS 中获取插件名称白名单。切勿将 POST 数据插入到 IDENTIFIED WITH、VIA 或 plugin= 中。

参考资料

  • github.com/phpmyadmin/phpmyadmin 标签 RELEASE_5_2_3 (962857e4f63d42e38f11ff4d63f5e722018add76)
  • libraries/classes/UserPassword.php
  • libraries/classes/Server/Privileges.php
  • 同一固定版本:PMA-5.2.3-WebAuthn-2FA
  • CWE-89

许可证

GNU Affero GPL v3.0。参见 LICENSE。仅限回环实验环境使用。不提供任何担保。

下载工具