王繼紅
黑龍江信息技術(shù)職業(yè)學(xué)院,黑龍江 哈爾濱 150025
隨著Internet的發(fā)展,Web技術(shù)日新月異。ASP(Active Server Pages)作為一種典型的、成熟的服務(wù)器端網(wǎng)頁(yè)設(shè)計(jì)技術(shù),被廣泛地應(yīng)用在企業(yè)網(wǎng)站、網(wǎng)上商城等各種互聯(lián)網(wǎng)應(yīng)用中。同時(shí)Access數(shù)據(jù)庫(kù)作為微軟推出的以標(biāo)準(zhǔn)JET為引擎的桌面型數(shù)據(jù)庫(kù)系統(tǒng),由于具有界面友好、操作簡(jiǎn)單等特點(diǎn),具有大量的用戶群體。因此,ASP+Access成為很多中小型網(wǎng)上應(yīng)用系統(tǒng)的首選方案。但ASP+Access解決方案在為我們帶來(lái)便利的同時(shí),也帶來(lái)了很多不容忽視的安全問(wèn)題。
在ASP+Access應(yīng)用系統(tǒng)中,攻擊者會(huì)根據(jù)經(jīng)驗(yàn)獲得或者猜到Access數(shù)據(jù)庫(kù)的存儲(chǔ)路徑和數(shù)據(jù)庫(kù)名,則該數(shù)據(jù)庫(kù)就可以被下載到本地。例如:對(duì)于一些網(wǎng)上商城系統(tǒng)的Access數(shù)據(jù)庫(kù),設(shè)計(jì)者一般命名為shop.mdb、store.mdb等,而存儲(chǔ)的路徑一般為“URL/data/”或干脆放在根目錄(“URL/”)下。這樣,只要在瀏覽器地址欄中敲入地址:“URL/data/store.mdb”,就可以輕易地把shop.mdb下載到本地的機(jī)器中。因?yàn)锳ccess加密串存儲(chǔ)在*.mdb文件中從地址“&H42”開(kāi)始的區(qū)域內(nèi)。通過(guò)解密程序可以輕松地得到Access數(shù)據(jù)庫(kù)的密碼。因此無(wú)論即使設(shè)置了數(shù)據(jù)庫(kù)密碼,只要數(shù)據(jù)庫(kù)被下載,其信息就沒(méi)有任何安全性可言了。所以如何有效地防止Access數(shù)據(jù)庫(kù)被下載,就成了提高ASP+Access系統(tǒng)安全性的重中之重。
1)非常規(guī)命名法:防止數(shù)據(jù)庫(kù)被找到的簡(jiǎn)便方法是為Access數(shù)據(jù)庫(kù)文件起一個(gè)非常規(guī)的復(fù)雜的名字,并把它存放在多層目錄下。例如,對(duì)于網(wǎng)上商城的數(shù)據(jù)庫(kù)文件,起個(gè)非常規(guī)的名字,例如:mhr4v53h.mdb,再把它放在如:/atncj16t/kgyb61/ahjx5rv 之類的深層目錄下。這樣,對(duì)于通過(guò)猜測(cè)得到Access數(shù)據(jù)庫(kù)文件名并破解的,起到了有效的阻止作用。
2)使用ODBC數(shù)據(jù)源:在ASP程序設(shè)計(jì)中,數(shù)據(jù)庫(kù)名和路徑會(huì)出現(xiàn)在ASP源代碼中。例如:
可見(jiàn),即使數(shù)據(jù)庫(kù)名字起得再怪異,隱藏的目錄再深,ASP源碼失密后,數(shù)據(jù)庫(kù)也很容易被破解。如果使用ODBC數(shù)據(jù)源,就不會(huì)有這樣的問(wèn)題了,如:conn.open “ODBC-DSN名”。
3)對(duì)ASP源碼加密:為有效地防止ASP源代碼泄露,可以對(duì)ASP頁(yè)面進(jìn)行加密。一般有兩種方法對(duì)ASP頁(yè)面進(jìn)行加密。一種是使用組件技術(shù)將編程邏輯封裝入DLL之中;另一種是使用微軟的Script Encoder對(duì)ASP頁(yè)面進(jìn)行加密。一般使用組件技術(shù)存在的主要問(wèn)題是每段代碼均需組件化,操作比較煩瑣,工作量較大;而使用Script Encoder對(duì)ASP頁(yè)面進(jìn)行加密,操作簡(jiǎn)單、收效良好。
asp手工注入漏洞檢測(cè):例如網(wǎng)址http://site/hack92.asp?id=1我們?cè)谶@個(gè)地址后面加上單引號(hào)’ 然后and 1=1 正確 and 1=2 錯(cuò)誤的話就說(shuō)明存在注入漏洞了。
注入點(diǎn)sa權(quán)拿服務(wù)器:注入點(diǎn)http://site/hack92.asp?id=1是否存在xp_cmdshell and 1=(select count(*) from master.dbo.sysobjects where xtype = 'x' and name = 'xp_cmdshell')
——用xp_cmdshell執(zhí)行命令
;exec master..xp_cmdshell"net user name password /add"—
;exec master..xp_cmdshell"net localgroup name administrators /add"—
當(dāng)然我們可以直接讓工具來(lái)幫我們搞定。這一類工具有Domain,NBSI,HDSI等等
現(xiàn)在比較流行的SQL注入攻擊是通過(guò)GET和POST來(lái)完成具體的注入。我們可以通過(guò)一些判斷語(yǔ)句,將注入時(shí)所用到的重要符號(hào)過(guò)濾掉,以達(dá)到防止非法注入目的。下面是asp中防止腳本注入攻擊代碼示例:
通過(guò)分析我們發(fā)現(xiàn),攻擊者不管是通過(guò)備份數(shù)據(jù)庫(kù)、破解數(shù)據(jù)庫(kù)、SQL注入、上傳漏洞,其目的就是為了得到管理員的用戶名和密碼進(jìn)入后臺(tái),得到一個(gè)WebShell。如果我們程序、數(shù)據(jù)庫(kù)不存在這些漏洞,攻擊者前面做的很多事都將會(huì)是徒勞的。但網(wǎng)站管理員還要記住,有些時(shí)候因密碼保管不當(dāng),或無(wú)意中泄露,也會(huì)導(dǎo)致網(wǎng)站系統(tǒng)的安全問(wèn)題,所以提高密碼意識(shí),建立密碼管理制度也是保證網(wǎng)站系統(tǒng)安全的重要原則。
[1]趙燕燕.ASP技術(shù)在Web數(shù)據(jù)庫(kù)開(kāi)發(fā)中的使用[J].河南職工醫(yī)學(xué)院學(xué)報(bào),2009,1.
[2]尚俊杰.網(wǎng)絡(luò)程序設(shè)計(jì)—ASP.清華大學(xué)出版社有限公司,2009,1.
[3]李禹生.ASP實(shí)用技術(shù)(網(wǎng)絡(luò)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)設(shè)計(jì))[M].水利水電出版社,2004,8.
[4]黃爽,郭勝,高平茹.ASP網(wǎng)絡(luò)程序設(shè)計(jì)教程[M].清華大學(xué)出版社,2007,12.