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注入 - 认证插件标识符未加引号

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

Abraxas Labs - phpmyadmin-auth-plugin-unquoted

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  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。提交一个不同的名称,该子句就会重新出现。

已记录的弯路:将 MySQL 1227 视为遗留问题失败(它恰恰证明额外 SQL 被解析了);声称在 MySQL 8 上无 GRANT 权限的插件更改可行;将 config 认证视为在范围内;反弹 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 登录。POST /user-password,参数为 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。仅限回环实验环境。不提供任何担保。

下载工具