網頁提示:SQL注入流行很久了,我們找漏洞注入目的無非是想得到數據庫內的東西,比如用戶名密碼等。(當然mssql數據庫還可以借此獲得權限)。如果我們不用注入就可以得到整個數據庫,不是更好嗎?於是暴庫成了一個比注入更簡單的的入侵手段。
為何這樣?
這是因為網站內用了虛擬目錄,也就是說這個網站的子目錄channely並不在網站根目錄內,設置過IIS的人會知道,可以將網站目錄外的一個真實物理目錄設置為網站的虛擬目錄。也就是說,網站的相對對徑並不總是從根目錄算起,很可能在某個子目錄就指向了物理目錄。
上面的結果很顯然:channely已位於H:盤的根目錄上,上面再沒有目錄。事實上,很可能網站在d:盤或e:盤,而通過IIS中設置channely虛擬子目錄指向網站根目錄以外的"H:\channely\",這裡,我們可以更清楚的看到,微軟IIS為何沒有到根目錄,只要遇上"\"就認為已到物理絕對路徑,不再往上解析的原因,就是為了處理這種網站虛擬目錄與根目錄不在一起的情況。它優先查詢每個目錄是否指向了物理路徑,如果指向了,則把它換成絕對路徑,而它上面的相對地址不再解析轉換。
從以上分析可知,我們只有在數據庫相對地址和它的目錄絕對地址之間使用"\"("%5c"),才能達到目的。上例中,如果在第二處使用,它只會影響到IIS尋找虛擬的channely目錄地址,而conn.ASP中解析出的數據庫地H:\channely\blog、log_mdb\%29dlog_mdb%29.ASP仍是對的,當然不會暴庫。
《再談%5c暴庫的利用》中還說了一種針對只有一級目錄的解決方法:
"其實一級目錄我們也同樣可以成功的,我們可以通過構造一個多級目錄來達到暴庫的目的。
如下:
http://www.target.com/noexists/..%5clist.ASP?id=1
這樣大家就會有新的驚喜了,呵呵。"
真的嗎?從理論上分析,這種方法是不會成功的。因為遇到"%5c"時,不再解析,所以中間構造的目錄,不論是真是假,都是不起作用的,被捨棄了,相對路徑還是到了根目錄,路徑不會出錯。
這個網站我們先用conn.ASP方法暴出數據庫(後面將講的),說明服務器和網站設置是可以暴庫的。
得到如下結果
http://www.om88.com/abc/..%5cArticle_Show.ASP?ArticleID=481
卻暴不出庫,仍得到正常頁面(換成存在的路徑結果也一樣),但圖片無法顯示。這是因為相對路徑變了,所以無法正確找到圖片路徑,但絕對路徑解析時被"%5c"捨棄了,沒有出錯,當然暴不出庫。
二,conn.ASP暴庫大法
這裡,conn.ASP只是表示數據庫調用文件,因為多數都是這個名字(有些網站改名,我們也視同conn.asp)。其實,這種暴庫法是最先出現的,以前很多牛人都對此進行過探討。只是在"%5c"暴庫大法出現後,倒較少有人提及。其實個人認為,"%5c"暴大法隨著服務器設置安全性的加強,用武之地會越來越少。而conn.ASP暴庫大法發揮的余地更大,可以人為構造,臭要飯的當年著名的動網大挪移實現暴庫,其實也屬於此類。
上面http://www.om88.com/
一例中,用"%5c"暴不出數據庫路徑,因為沒有二級目錄,但用第二種卻可以暴出。它是動力系統的。
我們再來看另外一個ASP系統一個盜帥的例子:_blank>http://www.51see.org/
提交
http://www.51see.org/db/user.ASP
得到如下結果
"Microsoft JET Database Engine 錯誤 ’80004005’
’d:\Hosting\wwwroot\uilady_com\htdocs\db\db\downloadwoaini12345.ASP’不是一個有效的路徑。 確定路徑名稱拼寫是否正確,以及是否連接到文件存放的服務器。
/db/user.ASP,行6 "