前言:網(wǎng)絡(luò)是沒有絕對(duì)安全的,這是一句經(jīng)典的名言,我也不用多說(shuō)了!今天主要為大家演示一下,怎么下載Access數(shù)據(jù)庫(kù)和防止Access數(shù)據(jù)庫(kù)被下載。
攻:
一、發(fā)揮你的想象力,修改數(shù)據(jù)庫(kù)文件名,從理論上講不一定能防止被下載
修改數(shù)據(jù)庫(kù)名,其目的就是防止我們猜到數(shù)據(jù)庫(kù)而被下載。但是萬(wàn)一我們猜到數(shù)據(jù)庫(kù)名,就直接可以下載了。所以這不能保證100%不能被下載。猜解數(shù)據(jù)庫(kù)的常用的辦法就是寫程序去猜解數(shù)據(jù)庫(kù)名,判斷WEB返回的是不是404錯(cuò)誤,如果提交一個(gè)MDB文件,沒有返回404錯(cuò)誤,那就猜對(duì)了,就直接下載。當(dāng)然這有一定的局限性,因?yàn)槿绻麛?shù)據(jù)庫(kù)名非常復(fù)雜。會(huì)產(chǎn)生大量的日志。管理員可能早發(fā)現(xiàn)了。并且還有猜解的時(shí)間會(huì)變得很長(zhǎng)。
二:數(shù)據(jù)庫(kù)名后綴改為ASA、ASP等,不一定能防止被下載
IIS在通過(guò)asp.dll處理.asp擴(kuò)展名文件的時(shí)候,對(duì)以外的內(nèi)容,不做任何處理就直接輸出,但是MDB文件中如果沒有之類的ASP標(biāo)實(shí)符,我們直接在IE中輸入U(xiǎn)RL返回在IE中的數(shù)據(jù),就是MDB文件的數(shù)據(jù),我們直接用FLASHGET之類的軟件就可以下載,下載后改名這后就可以用了。
三: 數(shù)據(jù)庫(kù)名前加“#”,一定能防止被下載
有些人誤認(rèn)為: “只需要把數(shù)據(jù)庫(kù)文件前名加上#、然后修改數(shù)據(jù)庫(kù)連接文件(如conn.asp)中的數(shù)據(jù)庫(kù)地址。原理是下載的時(shí)候只能識(shí)別 #號(hào)前名的部分,對(duì)于后面的自動(dòng)去掉。”
這樣是比較安全的。這只是對(duì)于一般的人無(wú)法下載。因?yàn)樗麄儾恢溃矝]有去了解有關(guān)IE編碼的技術(shù)。在編碼中我們用%23來(lái)代替#號(hào)。所以我們?nèi)绻幸粋€(gè)數(shù)據(jù)庫(kù)是: http://www.xxx.com/data/#datapro.mdb 我們直接在IE中輸入: http://www.xxx.com/data/%23datapro.mdb 就可以下載了:
四:加密數(shù)據(jù)庫(kù)
有些人認(rèn)為,把ACCESS數(shù)據(jù)庫(kù)進(jìn)行加密,就算得到數(shù)據(jù)庫(kù)他也沒有辦法得到里面的任何信息。這是一種錯(cuò)解。下載后,2秒鐘碼解出數(shù)據(jù)庫(kù)密碼。Access數(shù)據(jù)庫(kù)的加密機(jī)制是非常脆弱的。加密后數(shù)據(jù)庫(kù)系統(tǒng)通過(guò)將用戶輸入的密碼與某一固定密鑰進(jìn)行“異或”來(lái)形成一個(gè)加密串,并將其存儲(chǔ)在*.mdb文件從地址“&H42”開始的區(qū)域內(nèi)。用程序可以輕松的寫出破解代碼。網(wǎng)上已經(jīng)有這樣的程序了。現(xiàn)在我為大家推薦一款比較老,但非常實(shí)用的破解數(shù)據(jù)庫(kù)密碼程序:accesskey.exe
五:我們用特殊請(qǐng)求讓腳本解析出錯(cuò),得到數(shù)據(jù)庫(kù)路徑。
在網(wǎng)絡(luò)上,有很多人直接采用以下代碼,來(lái)連接數(shù)據(jù)庫(kù),看: .... DB_Path = "Data/ABCD1234!@#1po.mdb" DB_String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(DB_Path) Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open DB_String .... 數(shù)據(jù)庫(kù)文件名也夠復(fù)雜了,用程序破解,我想是沒有人想去嘗試的。 像這樣的連接方式我們都可以直接取得他的數(shù)據(jù)庫(kù)路徑。由于這種方法危險(xiǎn)性太大了,知道本方法的人很少。這里不敢公布。一旦公布不知道有多少網(wǎng)站的數(shù)據(jù)庫(kù)會(huì)被下載。等以后看情況再說(shuō)吧。所以這里我只為大家提供臨時(shí)補(bǔ)丁。在Conn.Open DB_String上面加上一句話: ON ERROR RESUME NEXT 就可以解決這個(gè)問題.
上面我們介紹了怎么去下載數(shù)據(jù)庫(kù)。這里我再為大家提講解一些防止數(shù)據(jù)庫(kù)被下載的方法.。
一、你用的是虛擬主機(jī):
首先在你的MDB文件中建一個(gè)表.表中取一個(gè)字段名叫:NotDownLoad吧。
在表名建一個(gè)字段。字段中填入:
呵呵,再把數(shù)據(jù)庫(kù)改名為.Asp的。為什么要取名為其實(shí)=’a’-1這里你可以亂輸入只要不是正確的Asp語(yǔ)句就行了。因?yàn)檫@樣把擴(kuò)展名改成.ASP后在IE中輸入的時(shí)候。遇到了他就會(huì)去解釋之間的代碼,讓他解釋吧。呵呵會(huì)出錯(cuò),所以數(shù)據(jù)庫(kù)絕對(duì)不會(huì)正確的被下載
你讓為安全了嗎?呵呵還不安全。我們還得在數(shù)據(jù)庫(kù)名前加上一個(gè)#號(hào)。 如:#Data.Asp這里的#號(hào)并不是用來(lái)作防止下載的。防止下載的剛才的過(guò)程已經(jīng)作了解釋。當(dāng)你有多個(gè)MDB文件,并放在同一個(gè)目錄下.如:某個(gè)網(wǎng)站(由于安全原因,就不公布了)的整站系統(tǒng)。如果我們猜到管理員MDB文件的位置并且從另一個(gè)系統(tǒng)中得到SQL注入漏洞的同時(shí)可以采用ACCESS跨庫(kù)查詢的方法。來(lái)取得管理員庫(kù)中的記錄。 如果我們?cè)趲?kù)名前面加上#號(hào)的時(shí)候,就算你猜測(cè)到了,我們也不怕 提交:select * from d:webdata#data.asp.admin sql查詢語(yǔ)句,系統(tǒng)會(huì)提示出錯(cuò)。因?yàn)?在SQL語(yǔ)法中有表示日期的作用.語(yǔ)法出錯(cuò)也就不會(huì)去執(zhí)行查詢條件了。(呵呵,此網(wǎng)站目前還有一個(gè)漏洞我用access跨庫(kù)的方法攻擊成功過(guò)!)
我認(rèn)為比較安全的數(shù)據(jù)庫(kù)就應(yīng)該是#文件名.Asp 并且建一個(gè)臨時(shí)表,表中有一字段 輸入ASP代碼,讓ASP不能被正確的解釋。
二、你用的是托管主機(jī)擁有主機(jī)權(quán):
這種防下載的方法就太好辦了。呵呵把你的數(shù)據(jù)庫(kù)放到IIS以外的目錄。打死我,我也下不了。如你的WEB目錄在D:WebWebSite目錄下. 那么就把數(shù)據(jù)庫(kù)保存在D:WebData目錄下,當(dāng)然目前某些虛擬主機(jī),也提供專門的data目錄。
三、設(shè)置文件不可以下載
在IIS中,數(shù)據(jù)庫(kù)上右鍵屬性中。設(shè)置文件不可以讀取
結(jié)束語(yǔ)
看了本文不知道你有何感想,我相信只有實(shí)踐才會(huì)出真理。