有人可能會說,這麼簡單就暴庫,好爽!是不是所有網站都可以這樣啊?當然不是,已作了防護的肯定不行,沒作防護的,要暴庫也是有條件的。
如果說第一種暴庫法是利用了絕對路徑出錯,那麼,這種暴庫法就是利用了相對路徑出錯。
一般來說,只要conn.asp不在根目錄的系統,而調用文件在根目錄,就會出現這種問題。當然這種說法也是經驗性的,准確的說就是,conn.ASP與調用它的文件,如果相對位置改變了,就會報錯,暴出數據庫路徑。這樣說可能有人不明白,不要緊,接著看你就會明白的。
我們從動力文章系統說起:
動力文章系統的conn.asp位於系統的inc目錄下,而很多調用它的文件在系統根目錄下,比如User_ChkLogin.asp等,這樣當conn.asp執行時,它是在系統根目錄D:\wwwroot\zyx688\wwwroot\下執行的,因此,conn.ASP文件中,調用數據庫時,它考慮到執行時的目錄路徑,因而數據庫的相對地址寫成如下:
dim db
db="database/fp360609.ASP"
這樣,當它在系統根目錄下執行時,數據庫的相對路徑為根目錄下的"database"目錄內。但當我們直接請求它時,它工作的當前目錄是在根目錄下的INC目錄內,這時,數據庫的相對路徑就變成了"inc/database/fp360609.ASP",這樣它當然出錯。得到的絕對路徑中多出了"inc。為了讓大家看得更清楚,我們舉一個可以用兩種方法暴庫的網站,比較一下看有何不同:
提交:http://www.pofen.com/sc/down%5cshow.ASP?id=437
得到:
"Microsoft JET Database Engine 錯誤 ’80004005’
’D:\Webdata\pofen.com\sc\db\download.mdb’不是一個有效的路徑。 確定路徑名稱拼寫是否正確,以及是否連接到文件存放的服務器。
/sc/down/db/user.ASP,行6 "
再提交:http://www.pofen.com/sc/down/db/user.ASP
得到:
"Microsoft JET Database Engine 錯誤 ’80004005’
’D:\Webdata\pofen.com\sc\down\db\db\download.mdb’不是一個有效的路徑。 確定路徑名稱拼寫是否正確,以及是否連接到文件存放的服務器。
/sc/down/db/user.ASP,行6 "
兩種方法得到的絕對路徑,一個比實際路徑少了,一個則多了,所以路徑錯誤而報錯暴出數據庫。
這兩個系統都是因為conn.ASP不在系統根目錄下,而引起的。(其實這樣的系統不止兩個)。
那是不是conn.asp放在根目錄,與調用的文件在一個目錄下就無事呢?如果在一起,當然沒事,但牛人自有牛法子,可以通過構造方法來造成相對路徑變化,一樣能達到暴庫的目的。比如,動網的大挪移手法,將conn.asp移位,從而暴庫。當然,實際操作中,因為conn.asp移走後,網站無法工作,所以沒有成功。但這種思路還是給很多人啟發。如果有一種方法可以復制而不是移動,或者說,移動的不是conn.asp,而是調用conn.ASP的其它文件比如chklogin之類的,理論上就可以成功。(當然,如果服務器和網頁對暴庫進行了安全處理,就是另一回事)。這種方法,當也就是一些牛人把網頁存到本地改路徑而搞出來的。今天剛看到一個暴動易數據庫的最新方法,其原理也是構造錯誤而達到獲得真實路徑的目的。
三,暴庫的防范
說白了,暴庫是因為IIS服務器會對每個執行錯誤給出詳細說明,並停止執行,而IIS的默認設置又是將錯誤信息返回給用戶。因此,要避免暴庫,就應改變IIS的默認設置,選取錯誤時只給一個出錯的頁面,不給詳細信息。
"處理 URL 時服務器出錯。請與系統管理員聯系。"
其實,作為網站管理者,無法對虛擬主機設置時,只能在網頁中加強防范。就是在可能出錯的頁面加上這一句:
"On Resume Next",特別是在conn.ASP文件中要加上。
它的意思是出錯後,恢復執行下面的,也就是不理會出錯,當然就不會給出錯誤信息了。
動易系統3.62版的加上後,現在就暴不出路徑了。而天意商務網,conn.ASP也不在根目錄,但因為加了這句,也暴不出數據庫。