對 于SQL Server、Oracle等中大型的數據庫來說,Access數據庫具有結構簡單易用使用等優點。但是,黑客一旦下載得手,就可以輕易獲取包含在其中的網站管理員密碼等敏感信息,進而登錄到網站管理后臺,執行上傳木馬等操作,導致網站落入黑客之手??磥恚挥胁扇「鞣N安全措施,保護網站數據庫安全,才能讓黑客無功而返。
為了防止黑客隨意下載Access數據庫,最簡單的方法就是在數據庫名稱前面加上“#”的符號。但是,如果黑客將其更改為“%23”(例如“%23test.mdb”),就可以輕松下載該文件。對此,可以取用簡單的變換方式加以解決,例如,可以在數據庫名稱前面添加“#23%”前綴(例 如“#23%test.mdb”)或者“23%23%”前綴(例如“23%23%test.mdb”),這 樣,當在下載數據庫時,就會顯 示“Directoty Listing Denied”的錯誤提示,導致下載無法進行。
如果將其名稱更改為“23%#test.mdb”或者“##test.mdb”,就會出現無法找到該頁的提示,這同樣會攔截數據庫下載操作。之所以出現這樣的情況,原因在于當訪問“#23%test.mdb”、“##test.mdb”等以“#”開頭的文件時,對于IIS、Apachbe等服務器來說,當瀏覽器向服務器提交數據時會自動忽略“#”符號以及其后的所有內容,因為訪問過程就變成了訪問目錄的行為,所以就會出現目錄訪問失敗的情況。實際上,也可以在直接在數據庫名稱前加上“%”符號,同樣可以起到放下的作用。
當然,為了更好的保護數據庫文件,可以在其名稱前面添加更多的特殊字符。例如,可將其更改為“##%%23#test#$$%.mdb”等,如此復雜的名稱格式就可以讓常用的下載工具視其為非法的URL,這樣就可以保護數據庫文件安全了。當然,這也僅僅是從URL編碼的角度看問題,如果攻擊者更換一個角度,從URL加密的角度出發,就可以避開上述限制而下載數據庫,為此,可以在文件名稱中間夾雜空格符號,則可以有效防御這種下載方式。因為HTTP協議對地址進行解析時,會將空格編碼為“%”,這直接導致數據庫下載鏈接出錯,可以起到一定的防止下載的作用。
在Windows中創建文件時,如果我們試圖創建一個沒有名稱僅有后綴的文件時(例如“.txt”),系統就會彈出“必須鍵入文件名”的提示,禁止創建這樣的文件。如果您使用的基于小旋風等小型的ASP服務器的話,可以利用該方法防御數據庫下載操作。例如執行“ren#%test.mdb .mdb”命令,就可以將其更改為“.mdb”文件。當在瀏覽器中輸入“http”//xxx.xxx.xxx.xxx/data/.mdb”地址,試圖訪問該數據庫文件時,就會出現404錯誤。為了讓網站可以順利訪問該數據庫,需要地“conn.asp”等連接文件進行修改,將原來的數據庫名稱更改為“.mdb”,就可以解決問題了。
這樣,不管是使用瀏覽器訪問,還是使用下載工具,都無法下載該數據庫。如果網站數據庫文件較多,在同一存儲路徑下存在多個和Access數據庫,為了避免沖突,可以采取變通的方式解決。例如使用“copy shujuku01.mdb 空格 .mdb”, 將“shujuku01.mdb”更名為“ .mbd”,執行“copy shujuku02.mdb 空格空格 .mdb”,將“shujuku01.mdb”更名為“ .mbd”,如此類推,將不同的數據庫文件更名為以空格為開頭的“.mdb”文件,按照不同的文件來累加空格的數量。之后則在“conn.asp”文件中分別更改對應數據庫文件的名稱,這樣就可以化解上述問題了。
當然,對于IIS服務器來說,使用上述方法基本無效。在IIS中,可以采用更加簡單的更名方式,來防御非法下載操作。例如,將“test.mdb”更名為“test.ini”文件。之后對“conn.asp”等連接文件中的數據庫名稱做同樣的修改,當黑客試圖下載這樣的文件時,就會出現無法找到該頁的提示。因為瀏覽器和Web服務器都支持MIME,MIME規定了某種文件以及其對應的文件類型和傳輸及編碼方式。
在Internet信息服務管理器中選擇本地計算機,在其右鍵菜單中點擊“屬性”項,在彈出窗口中點擊“MIME類型”按鈕,在打開窗口中的IIS之處的文件類型,其中就包括“.mdb”,這就是為什么可以下載數據庫文件的原因。對應的,如果瀏覽器請求了一個服務器并不知道的MIME文件類型。那么瀏覽器就無法將其傳輸給客戶端,就會返回404的錯誤信息。因此,將“.mdb”的MIME類型刪除,就可以防止數據庫被非法下載了。如果您使用的是虛擬空間,就無權更改服務器中的MIME類型的話,可以將數據庫更名為任意一個IIS中沒有預設的MIME類型,就可以起到防止下載的作用。
為了有效的防止黑客暴庫,僅僅采用修改數據庫名稱的方式是遠遠不夠的,必須采取多種方法才可以保護數據庫安全。最有效的方法是對默認的數據庫名稱進行修改,讓黑客無法通過網站模版快速定位數據庫。因為很多網站采用的都是公開的整站程序,其數據庫路徑是公開的,如果不修改默認路徑的話,攻擊者可以毫不費力的下載數據庫文件。當數據庫路徑被黑客發現后,為了避免其下載數據庫,可以將數據庫文件存放到Web目錄之外的地方。例如,可以在網站目錄之外建立一個文件夾,假設為“f:data”。
之后將原來的數據庫文件移動到該目錄中,再將“conn.asp”等連接文件進行修改,其中的數據庫路徑更改為新的數據庫路徑,例如“DataSource ="&Server.mappath("../data/db.mdb")"”等。因為數據庫文件存在域網站目錄之外,攻擊者自然無法下載,但該方法對使用虛擬空間的網站用戶不適合。為此,可以采取變通的方法來解決,例如原數據庫文件為“pctest.mdb”,可以將其更名為“pc%23test.mdb”,之后在“conn.asp”連接文件中修改數據庫名稱,這樣,不管使用IE或者下載工具,都無法下載該數據庫。
還可以在數據庫目錄下創建名為“pc#test.mdb”的虛假數據庫文件,并在其中寫入警告信息。當攻擊者利用諸如“http://xxx.xxx.xxx.xxx/shujuku/pc%23test.mdb”之類的網址試圖下載“pc%23test.mdb”文件時,下載的卻是“pc#test.mdb”這個虛假的文件,顯示的也是該文件中的警告信息。
為抵御黑客暴庫,可以打開IIS服務管理器,在IIS屬性中的“主目錄”面板中點擊“配置”項,在應用程序配置窗口中點擊“添加”,在彈出窗口中點擊“添加”按鈕,在“可執行文件”欄中輸入“C:Windowssystem32inetsvrasp.dll”, 在“擴展名”欄中輸入“.mdb”,選擇“限制為”項,輸入“禁止”。點擊“確定”保存配置信息。當黑客試圖下載數據庫時,因為映射解析的作用,服務器會返回禁止訪問的提示。此外,還可采用重定向技術保護數據庫安全。例如在IIS管理器中打開目標網站,選擇其中的數據庫文件,在其右鍵菜單中點擊“屬性”項,在彈出窗口中選擇“重定向到URL”項,在“重定向到”欄中輸入當前網站的網址(或任意網址)。這樣當別人試圖訪問該數據庫時會自動跳轉到重定向的地址中。
有經驗的用戶都知道,在搜索引擎中輸入“關鍵字server.mapPath(".mdb")”,其中的“關鍵字”為搜索的目標,例如“音樂”等。執行了搜索操作后,可以找到大量相關的網頁。在對應的說明信息中可以看到和數據庫文件相關的路徑信息,例 如“dbq="+server.mappath(“../admin/data/news.mdb")”等。這給攻擊者帶來了很大的便利。只要對網站鏈接稍加分析,黑客可以幾乎毫不費力的得到了對應網站的數據庫下載地址。如果數據庫中的管理賬戶密碼沒有進行復雜加密的話,黑客攻破該網站是很輕松的事情。
黑客之所以可以利用搜索引擎發現網站的數據庫文件信息,主要是因為網站開發者安全意識比較淡漠,數據庫連接語句直接保存在普通的ASP頁面中。按照ASP網頁的執行規則,在“<%%>”標記中的內容將作為ASP的代碼執行,代碼并不顯示在網頁中,但是這些代碼可以通過網頁源文件查看到。因此,在開發網站時,需要采取規范的方法,將數據庫連接代碼寫入“conn.asp”之類的連接文件中,然后在需要調用數據的ASP網頁頂部添加“< !-- #include file="conn.asp">”語句,就可以調用數據庫了。為搜索到更多的數據庫,很多攻擊者會使用專用的挖掘工具來大面積的搜索目標網站。這其實是利用了搜索引擎的收錄技術,來搜索目標網站根目錄下是否存在名為“robots.txt”的文件,根據該文件來確定其對網站收錄的訪問權限范圍。
例如,打開某網站根目錄下的“robots.txt”文件,可以看到其中包含了關于該網站的敏感路徑信息,包括網站后臺地址,數據庫路徑以及一些程序的升級目錄等。為了防止網站數據庫以及其他敏感信息不被搜索引擎收錄,可以為“robots.txt”文件建立安全規則。例如,將“robots.txt”中的原有內容清空,在其中寫入“Useragent:*” 和“Allow:/cgibin/*.htm”兩行內容,這樣就實現了只允許訪問“cgibin”目錄下的所有“.htm”類型文件的連接以及與其相關的子目錄連接,將數據庫目錄等敏感內容隱藏起來的目的。
利用特殊字符,對網站數據庫進行探測,是黑客經常使用的招數。例如,在IE設置界面中打開“高級”面板,在其中取消“顯示友好的HTTP錯誤信息”項的選擇。之后打開目標網站,假設其地址為“http://www.xxx.net/amaztar/list.asp?id=100”。黑客在提交訪問地址時,將鏈接中第二個“/”進行修改,在瀏覽器中可以看到服務器返回的錯誤信息,在其中的“找不到文件”欄中顯示了該網站的真實數據庫地址。
如果直接訪問地址“http://www.xxx.net/amaztar%5cconn.asp”,即采用特殊字符對數據庫連接文件進行訪問,也可能在返回的錯誤信息中得到網站數據庫的真實地址。當然,上面的分析只是假設的網站,但是可以看出,將訪問鏈接中的特定“/”進行更改,就可以探測到網站的數據庫文件地址。這主要和IIS的設置解碼存在關聯,因為瀏覽器對相對路徑錯誤的解碼,導致出現數據庫文件路徑泄漏的問題。
為了避免出現上述漏洞,最簡單有效的方法對“conn.asp”連接文件進行修改。例如,在其中逐行依次加入“<%”,“Option Explicit”,“Dim” ,“Dim db”,“Dim Connstr”,“Db= "data/數據庫實際名稱.mdb"”,“ConnStr=”Provider= Microsoft.Jet.OLEDB.4.0;Data Source=”&Server.MapPath(db)”,“On Error Resume Next”,“Set conn = Server.CreateObject(“ADODB.Connection”)”,“conn.open ConnStr”,“If Ree Then”,“err.Clear”,“Ser Conn =Nothing”,“Response.Write= Nothing”,“Response.Write "數據庫連接出現異常,請查看提交的數據!"”,“Reponse.End”,“End If”,“%>”等語句。這樣,就實現了數據庫防暴庫功能。當黑客使用上述方法試圖探測網站的數據庫真實路徑時,服務器就會返回“"數據庫連接出現異常,請查看提交的數據!”的警告信息。