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

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

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

订阅源联系隐私© 2026 Kitploit

工具目录

分类

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

phpmyadmin-importldi

phpMyAdmin 5.2.3 - 高危 - 远程 - SQLi - ImportLdi TERMINATED BY 残留

查看仓库
4天前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Abraxas Labs - phpmyadmin-importldi

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

phpmyadmin-importldi

类别: SQLi 可达性: 远程

phpMyAdmin 5.2.3(RELEASE_5_2_3 / 962857e)- phpMyAdmin

ImportLdi.php 使用来自 POST 参数 ldi_terminated 和 ldi_new_line 的 FIELDS/LINES TERMINATED BY 构建 LOAD DATA。这两个字符串被拼接进单引号 SQL 中。ldi_enclosed 和 ldi_escaped 会经过 escapeString。phpMyAdmin 在 /import 上设置 PMA_ENABLE_LDI,因此 MYSQLI_OPT_LOCAL_INFILE 处于开启状态。

已登录用户在 ldi_terminated 中携带引号 POST format=ldi。生成的 LOAD DATA 在 TERMINATED BY 中包含原始 POST 内容。SQL 注入进入用户连接,而非控制用户连接。

ID暂无 CVE
类别SQLi
可达性远程(已认证 cookie 登录;表导入,格式 ldi)
CWECWE-89
CVSS中危:6.5 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N
产品phpMyAdmin
受影响版本5.2.3 标签 RELEASE_5_2_3(962857e4f63d42e38f11ff4d63f5e722018add76)
认证已认证 cookie 登录。表导入,格式 ldi
许可证GNU Affero GPL v3.0
实验环境仅 127.0.0.1

攻击者能做什么

一个已登录且能打开表导入功能的 phpMyAdmin 用户,可以在其自身 MySQL 连接上向 LOAD DATA ... TERMINATED BY 注入 SQL。

权限方法 / 汇聚点侦察 / 完整性 / 可用性实验验证或推断
突破 FIELDS TERMINATED BY 字面量POST index.php?route=/import format=ldi ldi_terminated 携带引号PMA 构建语句的完整性实验验证。HTML SQL 框:TERMINATED BY '',PMA-IMPORTLDI-WITNESS'
保持 ENCLOSED BY 在带内同一 POST,ldi_enclosed 中携带引号阴性对照实验验证。ENCLOSED BY 被转义
在用户连接上执行额外 SQL(INTO OUTFILE / 若允许则堆叠查询)字符串闭合后的同一汇聚点用户连接的完整性推断。实验止于被破坏的分隔符。默认 mysqli::query 为单语句
MySQL 侧文件读写若账户拥有 FILE 或指向 Web 服务器的 LOCAL INFILE,则同一 LOAD DATAmysqld 可触及文件的完整性推断。此处未授予该权限。不作断言

本实验已排除:未认证访问、控制用户 / pmadb、操作系统 include LFI,以及受 FILE 权限限制的读写。已登录用户本就拥有 SQL 框;此遗留问题在于 PMA 为其构建的语句中未转义的分隔符。

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

我是如何发现的

我固定了 phpMyAdmin RELEASE_5_2_3。手工构建 LOAD DATA 的导入插件是引号审计的重点。四个分隔符字段中有两个被转义,两个没有:

$sql .= ' FIELDS TERMINATED BY \'' . $ldi_terminated . '\'';
...
$sql .= ' LINES TERMINATED BY \'' . $ldi_new_line . '\'';

ldi_enclosed / ldi_escaped 调用 $dbi->escapeString。Common.php 在 /import + format=ldi 上设置 PMA_ENABLE_LDI。路由为 GET|POST /import 和 GET|POST /table/import。

已记录的弯路:在没有 FILE 授权的情况下声称 LFI;将 SQL 框本身当作发现(遗留问题是 PMA 拼接的未转义分隔符);声称控制用户 / pmadb;反弹 shell。都是表演。

实验环境

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

目标仅限 http://127.0.0.1:19290。镜像为 phpmyadmin:5.2.3 和 mysql:8.0。Compose 项目名 phpmyadmin-importldi。运行结束后栈会拆除。

Cookie 登录。POST /import,携带 format=ldi 并在 ldi_terminated 中放入引号。生成的 LOAD DATA LOCAL INFILE ... INTO TABLE \ldi_target` FIELDS TERMINATED BY '',PMA-IMPORTLDI-WITNESS'。同样的引号放在 ldi_enclosed中则存储为转义后的ENCLOSED BY。5.2.3 镜像上的固定源码仍包含 '.$ldi_terminated.'和$dbi->escapeString($ldi_enclosed)`。

SUCCESS phpmyadmin-importldi pin=RELEASE_5_2_3 how=live TERMINATED-BY-raw ENCLOSED-escaped PMA-IMPORTLDI-WITNESS

修复方案

对 ldi_terminated 和 ldi_new_line 调用 escapeString,与 enclosed 和 escaped 一致。对 skip_queries 进行整数强制转换。

参考资料

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

许可证

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

下载工具