高版本MySQL之UDF提权
字数 984 2025-08-29 08:32:02

MySQL UDF提权技术详解

一、UDF提权概述

UDF (User Defined Function)提权是利用MySQL自定义函数功能实现权限提升的技术。攻击者通过创建恶意UDF函数,可以执行系统命令,从而获取服务器权限。

二、环境准备与版本差异

1. MySQL版本特性差异

  • MySQL 5.5版本

    • my.ini中无secure-file-priv参数
    • 默认查询该参数为NULL(不允许导出)
  • MySQL 5.6版本

    • my.ini中无secure-file-priv参数
    • 默认查询该参数为空(允许任意位置导出)
  • MySQL 5.7版本

    • my.ini中包含secure-file-priv参数
    • 默认值为数据目录下的Upload文件夹
    • 查询该参数显示为特定目录路径

2. 关键参数:secure-file-priv

此参数控制MySQL的导出行为:

  • NULL:禁止导出操作
  • 空值:允许在任何目录导出
  • 指定路径:仅允许在指定目录导出

修改方法:在my.ini中添加或修改:

secure-file-priv=

三、提权条件检测

执行以下查询判断当前环境是否适合UDF提权:

  1. 检查MySQL安装位置:
select @@basedir;

关键点:如果安装在C盘,可能因权限问题无法写入插件目录

  1. 检查导出权限设置:
show variables like '%secure%';

理想条件:结果为"空"且安装目录不在C盘

四、提权实施步骤

  1. 准备恶意UDF文件

    • 通常为.dll文件(Windows)或.so文件(Linux)
    • 包含执行系统命令的函数
  2. 导出UDF文件到插件目录

    • 需要secure-file-priv参数允许导出
    • 需要目标目录有写入权限
  3. 创建UDF函数

CREATE FUNCTION sys_exec RETURNS STRING SONAME 'udf.dll';
  1. 执行系统命令
SELECT sys_exec('whoami');

五、防御措施

  1. 安全配置建议

    • 设置secure-file-priv为特定目录或NULL
    • 限制MySQL用户的文件系统权限
    • 将MySQL安装在非系统分区
  2. 权限控制

    • 避免使用root权限运行MySQL服务
    • 限制插件目录的写入权限
  3. 监控措施

    • 监控异常UDF函数创建
    • 审计插件目录的文件变化

六、实际测试注意事项

  1. 不同MySQL版本表现不同,需针对性测试
  2. Windows和Linux系统路径和权限机制差异
  3. 现代系统通常有更严格的默认配置
  4. 提权成功率取决于具体环境配置

通过以上技术细节,安全研究人员可以更好地理解MySQL UDF提权机制,同时帮助管理员加固MySQL服务器安全配置。

MySQL UDF提权技术详解 一、UDF提权概述 UDF (User Defined Function)提权是利用MySQL自定义函数功能实现权限提升的技术。攻击者通过创建恶意UDF函数,可以执行系统命令,从而获取服务器权限。 二、环境准备与版本差异 1. MySQL版本特性差异 MySQL 5.5版本 : my.ini中无 secure-file-priv 参数 默认查询该参数为NULL(不允许导出) MySQL 5.6版本 : my.ini中无 secure-file-priv 参数 默认查询该参数为空(允许任意位置导出) MySQL 5.7版本 : my.ini中包含 secure-file-priv 参数 默认值为数据目录下的Upload文件夹 查询该参数显示为特定目录路径 2. 关键参数:secure-file-priv 此参数控制MySQL的导出行为: NULL :禁止导出操作 空值:允许在任何目录导出 指定路径:仅允许在指定目录导出 修改方法 :在my.ini中添加或修改: 三、提权条件检测 执行以下查询判断当前环境是否适合UDF提权: 检查MySQL安装位置: 关键点 :如果安装在C盘,可能因权限问题无法写入插件目录 检查导出权限设置: 理想条件 :结果为"空"且安装目录不在C盘 四、提权实施步骤 准备恶意UDF文件 通常为.dll文件(Windows)或.so文件(Linux) 包含执行系统命令的函数 导出UDF文件到插件目录 需要 secure-file-priv 参数允许导出 需要目标目录有写入权限 创建UDF函数 执行系统命令 五、防御措施 安全配置建议 : 设置 secure-file-priv 为特定目录或NULL 限制MySQL用户的文件系统权限 将MySQL安装在非系统分区 权限控制 : 避免使用root权限运行MySQL服务 限制插件目录的写入权限 监控措施 : 监控异常UDF函数创建 审计插件目录的文件变化 六、实际测试注意事项 不同MySQL版本表现不同,需针对性测试 Windows和Linux系统路径和权限机制差异 现代系统通常有更严格的默认配置 提权成功率取决于具体环境配置 通过以上技术细节,安全研究人员可以更好地理解MySQL UDF提权机制,同时帮助管理员加固MySQL服务器安全配置。