Access數據庫安全攻防策略

前言:
網絡是沒有絕對全安的. 這是一句經典的名言,我也不用多說了!
今天主要爲大家演示一下,怎麼下載Access數據庫和防止Access數據庫被下載.



攻:

一、發揮你的想象力 修改數據庫文件名,從理論上講不一定能防止被下載.
修改數據庫名,其目的就是防止我們猜到數據庫而被下載.
但是萬一我們猜到數據庫名,就直接可以下載了.所以這不能保證100%不能被下載.
猜解數據庫的常用的辦法就是寫程序去猜解數據庫名,判斷WEB返回的是不是404錯誤,如果提交一個MDB文件,沒有返回404錯誤,那就猜對了,就直接下載.
當然這有一定的侷限性,因爲如果數據庫名非常複雜,會產生大量的日誌.管理員可能早 發現了.並且還有猜解的時間會變得很長.


二:數據庫名後綴改爲ASA、等,不一定能防止被下載.
IIS在通過asp.dll處理.asp擴展名文件的時候,對<%%>以外的內容,不做任何處理就直接輸出,但是MDB文件中如果沒有<%%>之類的ASP標實符,我們直接在IE中輸入URL返回在IE中的數據,就是MDB文件的數據,我們直接用FLASHGET之類的軟件就可以下載,下載後改名這後就可以用了.如圖1:怎麼樣?

1090248832809.gif


(圖1)


三: 數據庫名前加“#”,一定能防止被下載.

有些人誤認爲:
"只需要把數據庫文件前名加上#、然後修改數據庫連接文件(如conn.asp)中的數據庫地址。原理是下載的時候只能識別 #號前名的部分,對於後面的自動去掉."

這樣是比較安全的.這只是對於一般的人無法下載.因爲他們不知道,也沒有去了解有關IE編碼的技術.在編碼中我們用%23來代替#號.所以我們如果有一個數據庫是:
http://www.xxx.com/data/#datapro.mdb
我們直接在IE中輸入:
http://www.xxx.com/data/%23datapro.mdb
就可以下載了.如圖2:

1090248851165.gif



(圖2)
四:加密數據庫,下載後,2秒鐘碼解出數據庫密碼.
有些人認爲,把ACCESS數據庫進行加密,就算得到數據庫他也沒有辦法得到裏面的任何信息.這是一種錯解.Access數據庫的加密機制是非常脆弱

的.加密後數據庫系統通過將用戶輸入的密碼與某一固定密鑰進行“異或”來形成一個加密串,並將其存儲在*.mdb文件從地址“&H42”開始的

區域內.用程序可以輕鬆的寫出破解代碼.網上已經有這樣的程序了。現在我爲大家推薦一款比較老,但非常實用的破解數據庫密碼程序:accesskey.exe(光盤中有提供)

圖3:

1090248876002.gif



(圖3)
五:我們用特殊請求讓腳本解析出錯,得到數據庫路徑.
  在網絡上,有很多人直接採用以下代碼,來連接數據庫,看:
....
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吧.
在表名建一個字段.字段中填入:<%=’a’-1%>
如圖4:

1090248894012.gif


(圖4)
呵呵,再把數據庫改名爲.Asp的.爲什麼要取名爲<%=’a’-1%>其實=’a’-1這裏你可以亂輸入
只要不是正確的Asp語句就行了。因爲這樣把擴展名改成.ASP後在IE中輸入的時候.
遇到了<%%>他就會去解釋之間的代碼,讓他解釋吧。呵呵會出錯,所以數據庫絕對不會正確的被下載.如圖5:

1090248910961.gif



(圖5)

你讓爲安全了嗎?呵呵還不安全.我們還得在數據庫名前加上一個#號。
如:#Data.Asp這裏的#號並不是用來作防止下載的。防止下載的剛纔的過程已經作了解釋.當你有多個MDB文件,並放在同一個目錄下.如:12yes的整站系統.

如果我們猜到管理員MDB文件的位置並且從另一個系統中得到SQL注入漏洞的同時
可以採用ACCESS跨庫查詢的方法.來取得管理員庫中的記錄.
如果我們在庫名前面加上#號的時候,就算你猜測到了.我們也不怕
提交:select * from d:/web/data/#data.asp.admin sql查詢語句,系統會提示出錯.因爲#在SQL語法中有表示日期的作用.語法出錯也就不會去執行查詢條件了.(呵呵12yes目前還有一個漏洞我用access跨庫的方法攻擊成功過!)

我認爲比較安全的數據庫就應該是#文件名.Asp 並且建一個臨時表,表中有一字段
輸入ASP代碼,讓ASP不能被正確的解釋.

二、你用的是託管主機:
這種防下載的方法就太好辦了.呵呵把你的數據庫放到IIS以外的目錄.打死我,我也下不了.
如你的WEB目錄在D:/Web/WebSite目錄下.
那麼就把數據庫保存在D:/Web/Data目錄下.
 
結束語:
看了本文不知道你有何感想,我相信只有實踐纔會出真理.大家多動手試試吧,也許你會發現更好的防下載辦法,與我交流.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章