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