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

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

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

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
phpmyadmin-pmadb-central-sqli — phpMyAdmin 5.2.3 - 高危 - 远程 - SQLi - central columns pmadb 查询残留 | Kitploit
工具/GitHubGitHub/abraxas/phpmyadmin-pmadb-central-sqli
漏洞分析漏洞利用Web应用程序漏洞利用Web安全渗透测试实验室与实践
GitHubabraxas/phpmyadmin-pmadb-central-sqli

phpmyadmin-pmadb-central-sqli

phpMyAdmin 5.2.3 - 高危 - 远程 - SQLi - central columns pmadb 查询残留

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
查看仓库
3天前尚未审核
分享

Abraxas Labs - phpmyadmin-pmadb-central-sqli

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  phpmyadmin-pmadb-central-sqli

phpmyadmin-pmadb-central-sqli

类别: SQLi 可达性: 远程

phpMyAdmin 5.2.3(标签 RELEASE_5_2_3,提交 962857e)。Central columns 在控制用户连接上,将 POST 的 extra 和 attribute 拼接进一个单引号 SQL 字面量来写入 col_extra。相邻字段都经过 escapeString。这两个没有。

已登录用户 POST index.php?route=/database/central-columns,带上 multi_edit_central_column_save=1,并在 field_attribute(或 col_extra)中放入一个引号。随后 getInsertQuery / updateOneColumn 会以 pma 控制用户身份对 pma__central_columns 执行该字符串。该账户是配置存储用户,而非已登录的 SQL 实例。

CVE-2016-5703 是 central columns 中的数据库名。这些 extra 和 attribute 字段并非那个漏洞。

ID暂无 CVE
类别SQLi(控制用户在 pma__central_columns 上)
可达性远程(已认证 cookie 登录;已启用 pmadb central columns)
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(962857e)
认证已认证 cookie 登录。已启用 pmadb central columns。
许可证GNU Affero GPL v3.0
实验环境仅 127.0.0.1:19210

攻击者能做什么

一个已登录的 phpMyAdmin 用户,只要能打开 Central columns,就能以控制用户身份在 pma__central_columns 上注入 SQL。

权限方法 / 路径实验验证或推断
破坏控制用户的 INSERT/UPDATE 字符串(pmadb SQL 的完整性)POST index.php?route=/database/central-columns multi_edit_central_column_save=1,在 field_attribute / col_extra 中放入引号实验验证。#1064 JSON 错误。控制用户错误中出现见证串 PMA-PMADB-CENTRAL-SQLI-WITNESS
让相邻字段保持带内同一 POST,在 field_name 中放入引号实验验证。行存储为 neg'col。escapeString 生效
读取或覆盖其他用户的 central-column 行同一汇聚点,一旦字符串被闭合推断。实验止于语法错误;无堆叠查询
以控制用户身份执行额外语句同一汇聚点,若控制 mysqli 连接允许多语句推断。默认 mysqli::query 为单语句。此处未启用
触达其他 pmadb 表(bookmarks、history、pma__userconfig)仅当堆叠查询或 INTO 式写入可行时推断。本实验中的控制用户仅有 phpmyadmin.* DML

本实验已排除:未认证访问、已登录 appuser 的 SQL 实例(仅 appdb)、OS shell 以及堆叠查询。若 pmadb / central columns 关闭,该功能不生效(那是 FAIL,而非此遗留问题)。

我是如何发现的

对 RELEASE_5_2_3 进行了八路并行源码排查。CentralColumns.php 中的相邻字段都经过 escapeString。Extra 和 attribute 则被 implode 进一个单引号字面量。CVE-2016-5703 是数据库名,而非这些列。

走过的弯路:把 field_name 中的引号当作遗留问题(它存储为 neg'col;那是反例);期望 general log 显示未转义的见证串(INSERT 在成功写入前就以 #1064 失败);把 pmadb 关闭当作此遗留问题(功能不生效)。

实验环境

python3 phpmyadmin-pmadb-central-sqli-Abraxas-Labs.py

或

cd lab
./run.sh

仅限回环:http://127.0.0.1:19210。镜像 phpmyadmin:5.2.3 和 mysql:8.0。Compose 项目 phpmyadmin-pmadb-central-sqli。见证串 PMA-PMADB-CENTRAL-SQLI-WITNESS。

SUCCESS phpmyadmin-pmadb-central-sqli how=live insert-syntax=yes field-name-escaped=yes general-log-unescaped=false error-has-witness=true PMA-PMADB-CENTRAL-SQLI-WITNESS

修复方案

对 extra 和 attribute 使用 escapeString / quoteString(..., CONNECT_CONTROL)。将 auto_increment、UNSIGNED、BINARY、UNSIGNED ZEROFILL 和 on update CURRENT_TIMESTAMP 加入允许列表。phpMyAdmin 6.x 中对 designer JSON blob 使用 quoteString 是此类 pmadb 拼接的已修复形态。

参考资料

  • github.com/phpmyadmin/phpmyadmin 标签 RELEASE_5_2_3(962857e)
  • libraries/classes/Database/CentralColumns.php getInsertQuery / updateOneColumn
  • Controllers/Database/CentralColumnsController.php POST multi_edit_central_column_save
  • 路由 GET|POST /database/central-columns
  • 同一版本的其他遗留问题:phpmyadmin-webauthn · phpmyadmin-designer-json-sqli · phpmyadmin-setup-validate · phpmyadmin-csrf-sql
  • CWE-89

许可证

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

下载工具