漏洞復現 Mysql UDF提權

2021-10-10 22:05:15 字數 2518 閱讀 5208

udf (user defined function),即使用者自定義函式。是通過新增新函式,對mysql的功能進行擴充,其實就像使用本地mysql函式如 user() 或 concat() 等。

那麼我們該如何使用udf檔案呢?

在mysql預設安裝的裡面是不存在這個檔案的。

那麼如果假設該檔案存在被攻擊者上傳到路徑:c:\phpstudy\mysql\lib\plugin(mysql>5.1 預設\lib\plugin資料夾不存在)。

此時udf.dll檔案中定義了名為 sys_eval() 的 mysql 函式,該函式可以執行系統任意命令。但是如果我現在就開啟 mysql 命令列,使用 select sys_eval(『whoami』);的話,系統會返回 sys_eval() 函式未定義。因為我們僅僅是把 udf.dll 放到了 lib/plugin 目錄下,並沒有引入,如果沒有引入包,那麼這個包裡的類你是用不了的。

所以,我們應該把 udf.dll 中的自定義函式引入進來。看一下官方文件中的語法:

create function sys_eval returns string soname 'udf.dll';
引入函式:create function sys_eval returns string soname 'udf.dll';

執行命令:select sys_eval("whoami");

刪除引用:drop function sys_eval;

攻擊機:192.168.1.106(win10)

被攻擊機:192.168.30.143(winserver2008)

此時攻擊機(192.168.1.106)已經獲得了被攻擊機(192.168.30.143)的乙個webshell,並且也順利的找到了乙個注入點。

通過注入點得知mysql版本大於5.1

通過–sql-shell執行命令找到mysql安裝路徑。

通過webshell找到mysql安裝路徑,並且在\lib目錄下新建plugin目錄(這裡注意許可權, 實戰中如果許可權不夠高的話,是無法直接建立目錄的)

接下來,我們需要做的就是生成udf.dll檔案,預設sqlmap目錄e:\python38\sqlmap\data\udf\mysql

是有windows和linux下的使用的dll檔案的。

但是sqlmap中的檔案是通過編碼的,如果需要使用的話是需要sqlmap/extra/cloak目錄下的cloak.py檔案進行解碼。

判斷mysql是為32位還是64位,可以看到為32位。

使用sqlmap中32位udf.dll檔案,進行解密操作,生成udf.dll檔案。

python2 cloak.py -d -i e:\python38\sqlmap\data\udf\mysql\windows\32\lib_mysqludf_sys.dll_ -o udf.dll(這裡udf.dll檔名可以自定義)
通過webshell上傳udf.dll檔案到lib\plugin 目錄下。

通過webshell找到mysql中root密碼,一般位置在「c:\phpstudy\mysql\data\mysql\user.myd」

通過彩虹表解開密碼後,通過菜刀內建資料庫管理連線mysql資料庫,進行函式引用:

許可權提公升:

刪除引用:

linux下 udf提權 mysql udf提權

前言 udf user defined function 即 使用者自定義函式 檔案字尾為 dll 常用c語言編寫。通過在udf檔案中定義新函式,對mysql的功能進行擴充,可以執行系統任意命令。將mysql賬號root轉化為系統system許可權。思路 1.將udf檔案上傳到指定位置 sqlmap...

MS14 068域提權漏洞復現

目錄 ms14 068域提權漏洞復現 一 漏洞說明 二 漏洞原理 三 漏洞利用前提 四 實驗環境 五 漏洞利用 總結 改漏洞可能允許攻擊者將未經授權的域使用者賬戶的許可權,提權到域管理員的許可權。微軟官方解釋 kerberos認證原理 服務票據是客戶端直接傳送給伺服器,並請求服務資源的。如果伺服器沒...

MS14 068域提權漏洞復現

使用者向金鑰分發中心 key distribution center即kdc 申請票證授予票證 ticket granting ticket即tgt 如果此時宣告自己有域管理員許可權,並且金鑰分發中心沒有做校驗,那麼此時金鑰分發中心就會返回一張票據給tgt,tgt會給票據授予伺服器 ticket g...