明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

ACCESS高級(jí)注入圖文詳細(xì)圖文說(shuō)明教程

[摘要]現(xiàn)在我們?cè)谀_本注入攻擊的技術(shù)中,常用的手法分好多種,最普通的是利用子查詢或者是Union聯(lián)合查詢來(lái)取得一些特殊表中的內(nèi)容,比如Admin,Log表等等,這是一種純粹的對(duì)數(shù)據(jù)庫(kù)的攻擊方式,而MSSQL Server的方法則更為多樣和復(fù)雜, 當(dāng)我們?nèi)〉眠B接權(quán)限較高的注入點(diǎn)的時(shí)候,我們可以利用MSSQL...

現(xiàn)在我們?cè)谀_本注入攻擊的技術(shù)中,常用的手法分好多種,最普通的是利用子查詢或者是Union聯(lián)合查詢來(lái)取得一些特殊表中的內(nèi)容,比如Admin,Log表等等,這是一種純粹的對(duì)數(shù)據(jù)庫(kù)的攻擊方式,而MSSQL Server的方法則更為多樣和復(fù)雜,
當(dāng)我們?nèi)〉眠B接權(quán)限較高的注入點(diǎn)的時(shí)候,我們可以利用MSSQL Server本身所帶的擴(kuò)展來(lái)執(zhí)行命令,或者是獲取目錄,讀取文件與修改注冊(cè)表;在低權(quán)用戶的連接中,我們則可以試用差異備份,
或者干脆就是跑數(shù)據(jù)庫(kù)等方式來(lái)實(shí)現(xiàn)對(duì)系統(tǒng)的直接攻擊或者是間接的攻擊.再則則是類似于OracleMySQLDB2這些非MS直接支持的數(shù)據(jù)庫(kù)關(guān)于他們,我們也有多種多樣的攻擊手法,執(zhí)行命令,導(dǎo)出文件或讀取文件等.
以上是一些我們針對(duì)常用數(shù)據(jù)庫(kù)的攻擊方式的大體總結(jié),不難看出,其中最雞肋的,要算是Access的數(shù)據(jù)庫(kù)了.一來(lái)在Access中,無(wú)法直接獲取數(shù)據(jù)庫(kù)中的表名和字段名稱,二來(lái)在Access中,我們能做的東西非常少,
再說(shuō)也不支持多語(yǔ)句的SQL語(yǔ)法,和T-SQL的標(biāo)準(zhǔn)又有不少的區(qū)別,讓人覺(jué)得Access數(shù)據(jù)庫(kù)中僅有的Insert,Update,Select,Delte,Produce僅僅是對(duì)SQL語(yǔ)句的封裝而已.所以,我們依舊需要對(duì)Access進(jìn)行研究.
在這篇研究筆記中,我所參考的文章和資料,有部分來(lái)自nsfocus和xFocus早在2000-2002年的文檔,另一篇?jiǎng)t是SuperHei所發(fā)表的<關(guān)于Access的一些測(cè)試>,
大家可以在http://www.4ngel.net/安全天使安全小組的網(wǎng)站上查詢到.OK,廢話不要太多,我們繼續(xù)研究.
我們可以去翻看微軟在剛推出Windows 2000的時(shí)候曾經(jīng)出現(xiàn)過(guò)幾個(gè)非常大的腳本漏洞的漏洞公告,其中比如cateloy_type.asp的遠(yuǎn)程注入漏洞和Msadscs.dll漏洞等都涉及了與現(xiàn)在的攻擊手法或者是常用的利用方法極為不同的地方,
比如Catelog_type.asp的注入漏洞,它的代碼中出現(xiàn)的問(wèn)題是這樣的:
"select * from cateloy where type='" & Requset("Type") & "'"
誰(shuí)都能看明白這是一個(gè)非常低級(jí)的注入漏洞,直接將Type的值放入SQL語(yǔ)句中查詢,并沒(méi)有估計(jì)到用戶的惡意輸入.
如果換作現(xiàn)在,我們基本上只有拿來(lái)跑表份,幸好MS沒(méi)設(shè)置類似PHP的gpc,否則我們將一事無(wú)成.但是我們可以查看這篇漏洞資料的利用方式,其中涉及到了一個(gè)SQL語(yǔ)句:
Select * from Sometable where somefield=' Select Shell("cmd.exe /c dir") '
關(guān)于這個(gè)語(yǔ)句的介紹,是漏洞資料中所說(shuō)的,Access允許用" "來(lái)創(chuàng)建VBA函數(shù),導(dǎo)致命令被執(zhí)行,其實(shí)這只是Access內(nèi)置的一個(gè)特殊函數(shù)而已,相類似的還有cudir和Command函數(shù).具體的我們可以在Access中測(cè)試.測(cè)試的SQL語(yǔ)句如下:
Select Shell("cmd.exe /c dir c: > c:kevin.txt")
回到C盤,我們果然看到了kevin.txt.說(shuō)明語(yǔ)句執(zhí)行成功了.
然后我們將其轉(zhuǎn)到腳本中測(cè)試吧.編寫如下的VBS腳本
Set Conn=Createobject("Adodb.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=kevins4t.mdb"
Set Rs=Conn.execute("Select Shell(""cmd.exe /c dir c: > c:kevin.txt"")")
Msgbox Rs(0)
這一此出現(xiàn)的結(jié)果很出乎我們的意料,錯(cuò)誤的原因是"表達(dá)式中的'Shell'函數(shù)未定義".現(xiàn)在我們需要安靜下來(lái)喝杯咖啡然后思考為什么同樣的語(yǔ)句在不同的執(zhí)行者間會(huì)出現(xiàn)如此截然不同的問(wèn)題.一個(gè)能正常執(zhí)行,
而另外一個(gè)則是找不到函數(shù).試想微軟一定在其中的什么地方設(shè)置了一個(gè)開(kāi)關(guān),那么我們就去微軟的知識(shí)庫(kù)去了解一下.
在微軟的一篇關(guān)于沙盒模式的文檔中,我們了解到一些內(nèi)容:
為了安全起見(jiàn),MS在Jet引擎的Sp8中,設(shè)置了一個(gè)名為SandBoxMode的開(kāi)關(guān),這個(gè)開(kāi)關(guān)是開(kāi)啟一些特殊函數(shù)在另外的執(zhí)行者中執(zhí)行的權(quán)限的.它的注冊(cè)表位置在
HKEY_LOCAL_MACHINESoftWareMicrosoftJet4.0EngineSandBoxMode里,默認(rèn)是2.微軟關(guān)于這個(gè)鍵值的介紹為:0為在任何所有者中中都禁止起用安全設(shè)置,1為僅在允許的范圍之內(nèi),
2則是必須是Access的模式下(這就是為什么我們能在Access中執(zhí)行成功的原因.),3則是完全開(kāi)啟,連Access中也不支持.
那么好吧,我們來(lái)看看如果將值變?yōu)?將會(huì)怎樣.
這次運(yùn)行我們的VBS的時(shí)候,出現(xiàn)的情況是一組數(shù)字,再在C盤下查看文件,果然看到了我們的kevin.txt.很神奇吧.原來(lái)Access也是可以執(zhí)行命令的,只是微軟這家伙總是懶得說(shuō)出來(lái)而已.但是如果在實(shí)際方面會(huì)怎樣呢?
一.后門的設(shè)置
我們的運(yùn)用將會(huì)很窄.真的,一來(lái)我們需要的權(quán)限很高,起碼要到能改注冊(cè)表的權(quán)限,默認(rèn)是Admin和LocalSystem,二來(lái)是我們將如何修改注冊(cè)表,遠(yuǎn)程嗎?沒(méi)門的.所以我們只好將其當(dāng)作一個(gè)后門用.
只要我們修改了注冊(cè)表的值,那么在普通的注入語(yǔ)句中,這是一個(gè)很不錯(cuò)的后門方式,最起碼可以在外部執(zhí)行一些小小的命令什么的.
比如我們?cè)跐B透某個(gè)站點(diǎn)的時(shí)候拿到了最高權(quán)限,并且修改了這個(gè)SandBoxMode,之后我們被管理員掃地出門了.那么,在首頁(yè)的某個(gè)地方依舊存在這一個(gè)Select的注入點(diǎn),這樣最好,我們讓服務(wù)器執(zhí)行如下的SQL就行了.
InjectionURL' and 0<>(select shell("cmd.exe /c net user > c:inetpubwwwrootkevins4t.txt"))