漏洞复现
Vulhub-漏洞环境搭建
1panel
Bash
Tomcat
Siro框架漏洞
Apache Struts2
Apache 中间件
ThinkPHP框架漏洞
MySQL写入shell
Redis
MySQL提权
Fastjson反序列化漏洞
Spring
Jenkins
WebLogic
-
+
首页
MySQL提权
 ## 概述 MySQL 是一款开源关系型数据库管理系统(RDBMS),以高性能、易用性和低成本为核心优势,是全球最流行的数据库之一,广泛用于存储和管理结构化数据。 ## UDF提权 ### 漏洞描述 UDF(User-Defined Function,用户自定义函数)是 MySQL 提供的扩展功能,允许用户通过动态链接库(Windows 为.dll,Linux 为.so)添加自定义函数。 攻击者利用这一机制,将恶意代码编译为 UDF 库文件,通过 SQL 语句加载并执行系统命令,从而实现权限提升。 该漏洞本质是权限滥用,核心风险在于 MySQL 进程若以高权限(如 root 或 System)运行,攻击者可通过 UDF 突破数据库沙箱,控制整个服务器。 ### 漏洞范围 MySQL 5.1 及以下版本:默认允许 UDF 库文件放置在任意目录(如 Windows 的C:\Windows\System32),且默认未限制,攻击者可直接写入恶意文件。 MySQL 5.5-5.6 版本:secure_file_priv默认值为NULL(禁止文件操作),但通过修改配置可绕过限制。 MySQL 5.7 及以上版本:新增allow-suspicious-udfs参数(默认关闭),强制验证 UDF 库文件的完整性,同时secure_file_priv默认限制文件操作路径。 Windows 系统:MySQL 服务常以 System 权限运行,提权后可直接获取系统最高权限。 ### 漏洞原理 UDF 机制:MySQL 通过CREATE FUNCTION语句加载外部动态库,调用其中的函数。恶意 UDF 库文件包含执行系统命令的代码(如sys_exec、sys_eval)。 权限依赖:攻击者需拥有CREATE FUNCTION权限(通常为 root 用户),并可写入 MySQL 插件目录或绕过文件系统限制。 文件路径控制: - MySQL < 5.1:UDF 库可放置在任意目录(如C:\Windows\System32)。 - MySQL ≥ 5.1:UDF 库需放置在plugin_dir目录(可通过SHOW VARIABLES LIKE '%plugin%'查询)。 文件操作限制: - secure_file_priv=NULL:禁止所有文件导入 / 导出。 - secure_file_priv=/path/:仅允许在指定目录操作。 - secure_file_priv=""(空值):允许任意路径操作(默认值在 MySQL 5.5 前为"",5.5 后为NULL)。 ### 漏洞复现 1、查询secure_file_priv参数值。 ```sql SHOW VARIABLES LIKE '%secure_file_priv%'; ```  允许任意路径的操作。 2、查询plugin的位置,udf文件存储在哪里: ```sql SHOW VARIABLES LIKE '%plugin_dir%'; ```  3、SQLMap中自带的有恶意的udf文件:  值得注意的是在 sqlmap 中,用于 MySQL 的 UDF 动态库文件(如lib_mysqludf_sys.dll)为了避免被特征检测,默认是以编码形式存储的(文件名通常带有后缀\_,如lib_mysqludf_sys.dll_),需要通过 sqlmap 自带的cloak.py脚本解码后才能使用。 > cloak.py脚本解码 脚本路径:sqlmap/extra/cloak/cloak.py ```txt python cloak.py -d -i "/path/to/sqlmap/udf/mysql/windows/x64/lib_mysqludf_sys.dll_" -o "/path/to/output/lib_mysqludf_sys.dll" ``` ```cmd python cloak.py -d -i "../../data/udf/mysql/windows/64/lib_mysqludf_sys.dll_" -o "lib_mysqludf_sys.dll" ```  解码后的lib_mysqludf_sys.dll文件,该文件可被 MySQL 加载为 UDF 库。 4、将解码后的文件放入到MySQL的插件路径下:  5、创建UDF函数: ```sql CREATE FUNCTION sys_exec RETURNS STRING SONAME 'udf.dll'; ```  6、执行函数:   ## MOF提权 ### 漏洞描述 托管对象格式 (Managed Object Format) 文件是创建和注册提供程序、事件类别和事件的简便方法。文件路径为:c:/windows/system32/wbme/mof/,系统会定期(默认每 5 秒)扫描特定目录下的 MOF 文件并自动编译(通过mofcomp.exe工具)。 利用了 c:/windows/system32/wbem/mof/ 目录下的 nullevt.mof 文件,在一个特定的时间(默认每 5 秒)去执行一次的特性,来写入cmd命令使其被带入执行。 攻击者通过上传包含恶意代码的 MOF 文件到该目录,可触发系统以System 权限(Windows 最高权限)执行恶意命令,从而实现从低权限到系统级权限的提升。 MOF提权的条件要求十分严苛: - windows 03及以下版本; - mysql启动身份具有权限去读写c:/windows/system32/wbem/mof目录; - secure-file-priv参数不为null。 ### 漏洞版本 MOF 提权的有效性高度依赖 Windows 系统版本及权限配置: - 主要受影响系统:Windows Server 2003、Windows XP(及更早版本)。这些系统中,C:\Windows\system32\wbem\mof\目录(MOF 文件默认存放路径)默认允许普通用户写入(如Users组用户有写入权限),且 WMI 服务(Winmgmt)以 System 权限运行。 - 低风险 / 不受影响系统:Windows Vista、Windows Server 2008 及以上版本。微软在这些系统中加强了wbem\mof目录的权限控制(默认仅Administrators组可写入),且优化了 WMI 编译机制,大幅降低了利用可能性。 ### 漏洞原理 MOF文件每五秒就会执行,而且是系统权限,通过mysql使用load_file 将文件写入/wbme/mof,然后系统每隔五秒就会执行一次上传的MOF。 MOF当中有一段是vbs脚本,可以通过控制这段vbs脚本的内容让系统执行命令,进行提权。
毛林
2025年11月1日 14:13
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码