提權 --Mysql提權

一、適用場景

  • 拿到的Web服務器權限較低;
  • 目標服務器有mysqld服務,且擁有Mysql的system權限

二、UDF提權

2.1 UDF介紹

2.1.1 含義

  UDF(User Defined Functions,用戶自定義函數)Mysql的一個擴展接口,用戶可以添加新函數對MYSQL的功能進行補充。C++函數編寫,文件後綴爲 .dll。

2.1.2 UDF使用

這裏我們使用下面提權過程中使用的lib_mysqludf.dll文件來闡述UDF能幹啥?
lib_mysqludf.dll(sqlmap工具自帶)文件中提供瞭如下函數,可動態加載執行任意系統命令:

函數 作用
sys_eval () 執行任意系統命令,並將輸出返回
sys_exec () 執行任意系統命令,並將退出碼返回
sys_get () 獲取一個環境變量
sys_get () 創建或修改一個環境變量

如果沒有UDF庫文件(.dll)沒有在\plugin目錄下的話,執行會報錯:(不能打開共享庫)
在這裏插入圖片描述
因此,如果想使用自定義函數功能,必須將UDF庫文件放入到指定的位置下纔可以,這個也是UDF提權的核心所在!

2.1.3 注意點

官網對UDF安全項說明:爲了防止濫用用戶定義的函數:

  • 要創建 / 刪除自定義函數必須擁有數據庫的insert或delete權限(添加和刪除行)
  • Mysql版本<5.1之前,UDF庫文件需導入到系統目錄:C:\Windows / C:\Windows\system32下;
  • Mysql版本>=5.1之後,UDF庫文件必須放入服務器的插件目錄中(~/lib/plugin目錄下,該目錄由plugin系統變量的值給出,默認不存在,如提權需設法創建)。

Tips 1:Mysql5.1版本前和版本後的plugin_dir目錄?

  • Mysql<5.1版本,查看plugin_dir目錄:
    在這裏插入圖片描述
  • Mysql>=5.1版本,查看plugin_dir目錄:
    在這裏插入圖片描述

Tips2. 關於udf官方解釋,官網傳送門

  • 在這裏插入圖片描述

2.2 UDF提權操作

2.2.1 核心操作

mysql<5.0,將udf庫文件導出的路徑隨意;
5.0 <= mysql <+ 5.1 ,將udf庫文件傳入到系統目錄下;
mysql>5.1,將udf庫文件傳入到/lib/plugin目錄下(默認不存在,因此需要建立plugin也是提權要點限制條件之一)

2.2.2 提權限制

限制1
  • mysql開啓了遠程連接(可以遠程連接執行mysql命令)
限制2
  • secure_file_priv值爲空(mysql允許將數據導出到本地,遠程傳入UDF庫文件到目標服務器本地指定目錄)
限制3
  • 創建/plugin目錄(高版本的mysql數據庫默認沒有此目錄需要遠程創建)
限制4
  • 免殺(傳入的UDF庫文件未被殺軟殺掉)

2.2.3 操作過程

A. 環境展示

Windows10(攻擊機,ip:192.168.3.4)
Windows 2008 R2(虛擬機,ip:192.168.7.131)
Mysql 5.5.3(PHPStudy 2018)
在這裏插入圖片描述

B. 準備DLL文件

自動化注入工具sqlmap已集成lib_mysqludf_sys庫文件:(具有和操作系統進行交互功能的UDF庫,官網說明傳送門
其位置:
在這裏插入圖片描述
需要針對對方Mysql版本使用對應的dll文件才能生效
這裏的dll文件需要經過解碼才能使用,接下來對dll文件進行解碼:

Tips:sqlmap自帶的shell或一些二進制文件,爲了防止被誤殺都經過異或方式編碼,不能直接使用,可以利用自帶的解碼工具cloak.py進行解碼(目錄:\sqlmap\extra\cloak\cloak.py)

》》進入到cloak目錄下執行如下命令即可解碼,生成UDF庫文件
cloak.py -d -i <要解碼文件>
在這裏插入圖片描述

C. 判別能否外聯

目的:首先查看mysql是否允許遠程連接:
》》Nmap探測目的端口是否開放了mysql服務(已開放)
在這裏插入圖片描述
》》測試是否開啓遠程連接,這裏提供三種方法
方法一: 啓動mysql服務本地嘗試(返回如下不允許連接):
在這裏插入圖片描述

方法二: 使用客戶端管理軟件連接試探(返回如下則不允許遠程連接,推薦):
在這裏插入圖片描述
方法三: Hydra 遠程爆破,顯示如下則不允許遠程連接
在這裏插入圖片描述

Tips:這裏爲了演示提權方法,先允許數據庫遠程連接,操作請參考:Mysql開啓遠程連接
在這裏插入圖片描述

D. 遠程傳入文件

目的:將sqlmap已解碼後的dll文件傳入到指定目錄下!

Tips:這裏爲了演示已滿足提權限制2(secure_file_priv值爲空,這樣才能導入到文件到本地!),查看修改變量值secure_file_priv值方法可參考:Mysql導出數據之全局變量secure_file_priv
在這裏插入圖片描述

A.
A. 從UDF庫中引入自定義函數並執行

三、MOF提權

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章