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