通過上述錯(cuò)誤提示,入侵者就可以輕松地判斷出數(shù)據(jù)庫(kù)的位置,只需要在瀏覽器中輸入http://sample.com/support/db/webdb.mdb,就可以輕松下載該網(wǎng)站的數(shù)據(jù)庫(kù)。
威脅防治
為什么把站點(diǎn)URL的最后一個(gè)“/”改為%5C就能暴出站點(diǎn)數(shù)據(jù)庫(kù)呢?要明白這一點(diǎn),首先要知道%5C代表的是什么。%5C其實(shí)就是16進(jìn)制代碼中的“\”,但如果我們直接在瀏覽器中提交“\”,IE會(huì)自動(dòng)把“\”轉(zhuǎn)換為“/”,而提交“%5C”是不會(huì)被轉(zhuǎn)換的。
為什么遇到“\”就能暴出數(shù)據(jù)庫(kù)呢?因?yàn)槭褂谩埃堋睍?huì)產(chǎn)生絕對(duì)路徑錯(cuò)誤,使IIS報(bào)錯(cuò),這個(gè)報(bào)錯(cuò)信息就泄露了站點(diǎn)數(shù)據(jù)庫(kù)的位置。惡意攻擊者就可以憑此猜測(cè)數(shù)據(jù)庫(kù)的位置和名稱、%5C暴庫(kù)甚至下載數(shù)據(jù)庫(kù)。
那么,我們?cè)撊绾畏乐惯@類事情發(fā)生呢?
(1)防止入侵者通過簡(jiǎn)單的猜測(cè)而得到數(shù)據(jù)庫(kù)的位置??梢园褦?shù)據(jù)庫(kù)存入深層目錄下,取復(fù)雜的數(shù)據(jù)庫(kù)名稱。例如:webroot/mulu1/mulu2/mulu3/rbx9xu5.mdb。
(2)防止入侵者使用%5C暴庫(kù)。
配置IIS服務(wù)器,使其不顯示暴庫(kù)的錯(cuò)誤信息。處理該錯(cuò)誤的HTTP錯(cuò)誤編號(hào)是500,子錯(cuò)誤代碼:100。新建一個(gè)Error.htm,使錯(cuò)誤處理指向該網(wǎng)頁(yè)。
在數(shù)據(jù)庫(kù)連接文件中添加容錯(cuò)語(yǔ)句。
例如:下面的connect.a(chǎn)sp連接數(shù)據(jù)庫(kù)文件,在第一行添加容錯(cuò)語(yǔ)句。如果程序執(zhí)行出
現(xiàn)錯(cuò)誤,就會(huì)自動(dòng)跳過去執(zhí)行,不會(huì)提示錯(cuò)誤信息,暴出數(shù)據(jù)庫(kù)的位置。
<%
On error resume next’添加這行容錯(cuò)語(yǔ)句,就不會(huì)暴出數(shù)據(jù)庫(kù)的位置了。
set conn=server.createobject(“adodb.Connection”)
CS=“Provider=Microsoft.jet.OLEDB.4.0;Data Source=”
conn.ConnectionString=CS&Sever.MapPath(“db/netcenter.asp”)
Conn.open
%>
使用ODBC數(shù)據(jù)源,配置ODBC數(shù)據(jù)源
connect.a(chǎn)sp連接數(shù)據(jù)庫(kù)文件更改為:
<%
Set conn=server.createobject(“adodb.Connection”)
Conn.Open”test” ‘test為數(shù)據(jù)源名稱
%〉
這樣即使出錯(cuò),也不會(huì)暴露數(shù)據(jù)庫(kù)的位置了。
(3)防止數(shù)據(jù)庫(kù)被下載
更改數(shù)據(jù)庫(kù)文件的存儲(chǔ)位置到Web根目錄之外。
例如:原數(shù)據(jù)庫(kù)存儲(chǔ)位置在E:\webroot\asproot\support\db,這里asp站點(diǎn)的根目錄是:E: webroot\asproot。我們可以把數(shù)據(jù)庫(kù)文件放到:E\webroot\aspdb下面,連接數(shù)據(jù)庫(kù)的文件改為:
<%
Set conn=server.createobject(“adodb.connection”)
CS=“Provider=Microsoft.jet.OLEDB.4.0;DataSource=”
Conn.ConnectionString=CS&Server:MapPath(“…//db/netcenter.asp”)
Conn.Open
%〉
這樣更改之后,再用%5C暴庫(kù),根本就沒有報(bào)錯(cuò)。
添加應(yīng)用程序擴(kuò)展名映射
通過修改IIS配置實(shí)現(xiàn),這個(gè)方法筆者認(rèn)為是目前最好的。只要修改一處,整個(gè)站點(diǎn)的
數(shù)據(jù)庫(kù)都可以防止被下載。無須修改代碼,即使暴露目標(biāo)地址也可以防止下載。即使再輸入地址:httP://sample.Com/support/db/webdb.mdb,數(shù)據(jù)庫(kù)也不能被下載了。
以上方法都是筆者在工作中通過實(shí)踐以及測(cè)試總結(jié)出的比較有效的方法。實(shí)際配置中綜合使用會(huì)使服務(wù)器更安全。