mysql UDF提權

淺易深發表於2022-01-31

UDF提權原理

UDF (user defined function),即使用者自定義函式。是通過新增新函式,對MySQL的功能進行擴充,當黑客獲取了資料庫的root使用者的一個許可權時,即使所在的系統許可權很低,也可以使用UDF來自定義一個執行系統命令的函式,但是執行許可權為管理員許可權,命令執行。

提權前提

  • 擁有mysql資料庫的root許可權

  • 資料庫能寫入檔案,即secure_file_priv = “空”(不是null)

提權過程

1.獲取到mysql資料庫root許可權賬號密碼;
2.通過webshell管理工具,在mysql安裝路徑…\lib 建立 “plugin”資料夾,即生成…\lib\plugin路徑;
3.在…\lib\plugin寫入udf.dll檔案;
4.建立sys_eval()函式;
5.呼叫sys_eval()命令執行。

udf提權復現

獲取賬號密碼後,登入mysql:
在這裡插入圖片描述
檢視secure_file_priv的值是否為空,如圖則可寫入檔案:
在這裡插入圖片描述
可在my.ini檔案中新增該值:
在這裡插入圖片描述
建立…\lib\plugin路徑:
在這裡插入圖片描述
在該路徑寫入udf.dll檔案,該檔案預設在metasploit中存在:

find / -name "*mysqludf*"

在這裡插入圖片描述
也可直接通過msf整合的exp進行攻擊:
y
在這裡插入圖片描述
成功寫入檔案:
在這裡插入圖片描述
執行成功返回0。
由於該命令沒有回顯,不方便,所以我們需要手動使用該 dll 檔案建立sys_eval()函式,來執行有命令的回顯。
在這裡插入圖片描述

create function sys_eval returns string soname 'GUeNHsxv.dll'

在這裡插入圖片描述
獲得回顯:
在這裡插入圖片描述
mac系統下返回結果為16進位制,轉換為字串即可。

先這樣,後續再補充其他內容。。

相關文章