引言:為了預防注入式入侵攻擊,很多的網站管理員都會采取一些“防注”措施來阻止入侵者,但事實證明這并非是萬全之策,而且恰恰是自認為比較安全的防注入措施有時反倒成為入侵預防中的“短板”!
作為對網站數據庫進行入侵攻擊的最慣用手段之一,SQL“注入”式入侵攻擊因網站模板程序員編寫代碼時未對用戶輸入數據的合法性進行嚴格全面的判斷而導致安全隱患的存在。為了預防注入式入侵攻擊,很多的網站管理員都會采取一些“防注”措施來阻止入侵者,比如將 “and”、“delete”、“;”等敏感注入字符全部列入非法訪問的“黑名單”,過濾入侵者所提交的惡意查詢字符串;或是通過代碼轉換的方式將ASP/PHP動態網頁轉換成“偽靜態”的.htm網頁,打消入侵者窺探猜解的念頭(靜態網頁沒有“注入”漏洞之說)。但這并非是萬全之策,而且恰恰是這兩種自認為較安全的防注入措施有時反倒成為入侵預防中的“短板”!

圖1 提示檢測失敗
目前入侵者在檢測網站注入點時所使用的工具比較多,其工作流程基本上類似。比如先是將目標網站的某條訪問記錄的URL進行注入點的常規檢測,由于網站管理員事先做過數據庫查詢命令過濾的“防注”處理,因此在開始檢測之后很快就會有提示:“檢測失敗,該URL不可以進行注入!”(如圖1)。
不過,入侵者為了進一步確認目標網站是否真的不存在入侵的注入點,而不是僅僅依靠工具的機械探測,他可能會在瀏覽器地址欄該URL記錄最后添加一個英文字符,回車訪問后發現有“傳參錯誤!參數的值中包含非法字符串!”的提示。這些,都是網站模板中“防注”程序代碼的功勞。
入侵者用注入中轉類工具生成ASP,這樣,就得到了一個“.asp”的文件。
為給接下來二次使用“旁注Web綜合檢測程序”注入檢測搭好“戲臺”——ASP運行環境,入侵者使用工具設置后可在本地計算機瀏覽器中“半正常”地訪問目標網站,說明生成的ASP文件是有效的。
再次打開“旁注Web綜合檢測程序”,在“注入點”處粘貼剛才可以“半正常”訪問的頁面鏈接,接著,開始檢測,結果很快就出現與第一次檢測完全不同的提示:“恭喜,該URL可以注入!數據庫類型:Access數據庫!”。入侵者會探測出網站數據庫及列名,甚至是賬號和密碼。可見,“防注”并沒有防住“注入”的腳步。
在瀏覽器中訪問網站,隨機打開幾條鏈接時,瀏覽器地址欄中所顯示的URL都是.htm靜態文件,難道這就表示無法被“注入”式入侵所攻擊?入侵者有可能嘗試使用搜索引擎來查找是否在存在動態鏈接。
通過注入工具在“注入連接”后輸入URL,接著檢測出現提示:“這個連接不能SQL注入!請試別的連接!”。未檢測出網站的注入漏洞,但嘗試掃描網站的后臺登錄地址,IE瀏覽器就可以打開網站鏈接,就可能進入網站后臺管理登錄入口。
由于之前使用“注入檢測”掃描了不存在注入漏洞,入侵者就無法探測到管理賬號和密碼,也就無法進行后臺登錄。但若探測到網站后臺管理頁面,考慮到很多網站模板系統的默認管理賬號和密碼都是“admin”之類的簡單組合,這就給自己的網站留下了極大的安全隱患!
其實,以上兩處入侵預防“短板”事例只是網絡安全防護漏洞中的冰山一角。在預防“注入”式入侵的防護中,網管員除了要做好最常規的防注入措施外,如網站核心數據庫路徑及名稱的隱藏與防下載、各種危險查詢命令字符串的過濾以及一些惡意高頻訪問IP地址自動添加進黑名單等等,還有些比較簡單但非常有效的做法:
大多數網站為了管理的方便而設置了多個管理員賬號,而且權限都比較高,這其實是一種比較危險的做法——只要其中一個管理賬號被猜解就可能導致整個網站的淪陷。即使真有設置多個管理賬號的需求也應該分出級別,設置好不同的權限,最起碼讓擁有最高權限的管理賬號是惟一的,盡可能減少被注入猜解的幾率。
雖然密碼的強度是個老生常談的問題,但仍有很多的網站管理員設置使用模板默認的密碼或是一些簡單的密碼組合,一旦其對應的MD5密碼被注入猜解的話,接下來的破解將會變得非常簡單。假如管理登錄密碼足夠強大的話,即使是被入侵者注入猜解出MD5密碼也不能被破解,網站的安全性也可得到一定的保障。建議將自己所設置的密碼進行MD5加密,然后進行破解測試,如果顯示“無法破解”的話就是比較理想的密碼。
如果不幸被入侵者注入猜解,但只要后臺管理登錄地址隱蔽得足夠好,那也算是比較安全的。因此一定不要使用模板默認的后臺路徑,更不要在網站首頁設置后臺管理登錄的鏈接,最好是自定義一個不易被猜解出來的路徑名稱,以提高其隱蔽性。