整理一些暴庫(kù)知識(shí)
原理:
一、方式
暴庫(kù)的方式有多種多樣,我知道的就有3種以上,常見(jiàn)的暴的方法有:%5c類暴,conn.asp暴,ddos暴等等
二、原理
"%5c"暴庫(kù)法,它不是網(wǎng)頁(yè)本身的漏洞,而是利用了IIS解碼方式中的一個(gè)特性,如果IIS安全設(shè)置不周全,而網(wǎng)頁(yè)設(shè)計(jì)者未考慮IIS
錯(cuò)誤,就會(huì)被人利用。
為何要用"%5c"?它實(shí)際上是"\"的十六進(jìn)制代碼,也就是"\"的另一種表示法。在電腦中,它們是一個(gè)東東。
但提交"\"和"%5c"卻會(huì)產(chǎn)生不同的結(jié)果,在ie中,我們把下面第一個(gè)地址中的"/"換成"\"提交:
_blank> http://hxhack.com/soft\view.asp?id=58
_blank> http://hxhack.com/soft%5cview.asp?id=58
二者的訪問(wèn)結(jié)果是一樣的。ie會(huì)自動(dòng)把"\"轉(zhuǎn)變成"/",從而訪問(wèn)到同一地址。
但是,當(dāng)我們把"/"換成十六進(jìn)制寫法"%5c"時(shí),ie不會(huì)對(duì)此進(jìn)行轉(zhuǎn)換。地址中的"%5c"被原樣提交了。
當(dāng)IIS收到后解析時(shí),又會(huì)將%5c還原成"\"。這樣,iis中網(wǎng)址的相對(duì)路徑就變成/Soft/html\13/。這一點(diǎn)很重要。問(wèn)題正是從這里開(kāi)始的。
在ASP網(wǎng)頁(yè)中,凡調(diào)用數(shù)據(jù)庫(kù)時(shí),都會(huì)用到一個(gè)連接數(shù)據(jù)庫(kù)的網(wǎng)頁(yè)conn.asp,它會(huì)創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)連接對(duì)象,定義要調(diào)用的數(shù)據(jù)庫(kù)路徑
一個(gè)典型的conn.asp如下:
<%
dim conn
dim dbpath
set conn=server.createobject("adodb.connection")
DBPath = Server.MapPath("admin/hack58.mdb")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath
%>
大家注意第4句:DBPath = Server.MapPath("admin/hack58.mdb"),Server.MapPath方法的作用是將網(wǎng)站中的相對(duì)路徑轉(zhuǎn)變成物理上的絕對(duì)路徑。為何要這樣?因?yàn)檫B接數(shù)據(jù)庫(kù)時(shí),須指明它的絕對(duì)路徑。
?。ㄟ@里可能有人不明白,什么相對(duì)路徑、絕對(duì)路徑?IIS為了不讓訪問(wèn)者知道真實(shí)的實(shí)際路徑,并且確保網(wǎng)站不因變換地址而影響使用,它采用了一種相對(duì)路徑來(lái)表示目錄與文件之間的關(guān)系。也就是網(wǎng)址目錄只表示從根目錄起的相對(duì)位置。)
比如:上面的網(wǎng)站中,網(wǎng)站: http://hxhack.com/的根目錄為:"E:\web\",下載目錄則在根目錄(E:\web\)內(nèi)的"soft"下,我們網(wǎng)站訪問(wèn)該站時(shí),就是在訪問(wèn)E:\web\soft\目錄,而 http://hxhack.com/soft/admin/,它只表明了admin與soft這個(gè)目錄的相對(duì)關(guān)系,把這個(gè)網(wǎng)站放在D:盤,也一樣不改變admin位于soft目錄下的關(guān)系。
當(dāng)Server.MapPath方法將相對(duì)路徑轉(zhuǎn)為真實(shí)路徑時(shí),它實(shí)際是三部分路徑加在一起得到真實(shí)路徑的:網(wǎng)頁(yè)目前執(zhí)行時(shí)所在的相對(duì)路徑,也就是從網(wǎng)站物理根目錄起的相對(duì)路徑,比如上面例子中conn.asp處在從根目錄起的"/soft/"下;然后調(diào)用的數(shù)據(jù)庫(kù)的相對(duì)路徑是admin/hack58.mdb,這樣就得到從根目錄起的完整相對(duì)路徑:"/soft/admin/hack58.mdb"。
這些都只是相對(duì)的路徑,如何變?yōu)檎鎸?shí)路徑呢?
設(shè)置過(guò)iis的人都會(huì)知道,每一個(gè)網(wǎng)站,都必須指定它在硬盤上的物理目錄,比如上例中,網(wǎng)站根目錄所在的物理目錄為:"E:\web",Server.MapPath方法正是通過(guò)把"網(wǎng)站根目錄的物理地址+完整的相對(duì)路徑",從而得到真實(shí)的物理路徑。這樣,數(shù)據(jù)庫(kù)在硬盤上的物理路徑是:E:\web\soft\admin\hack58.mdb。
在這里,IIS以"\"表示真實(shí)路徑的目錄關(guān)系,而以"/"表示虛擬路徑,這可能就是IE會(huì)自動(dòng)把我們地址中的"\"轉(zhuǎn)為"/"的原因吧。
明白這些,我們?cè)賮?lái)理解暴庫(kù)就不難了,當(dāng)我們提交_blank> http://hxhack.com/soft%5cview.asp?id=58時(shí),view.asp調(diào)用conn.asp后,得到的網(wǎng)頁(yè)相對(duì)路徑是這樣的:/soft\ (見(jiàn)上),再加上"admin/hack58.mdb",就得到"/soft\"+admin/hack58.mdb。在iis中,"/"和"\"代表著不同的意義,遇到了"\"時(shí),認(rèn)為它已到了根目錄所在的物理路徑,不再往上解析(為何不再往上解析?后面還會(huì)分析的),于是網(wǎng)站的完整相對(duì)路徑變成了
?。?admin/hack58.mdb",再加上根目錄的物理路徑,得到的真實(shí)路徑變成:"e:\web\admin\hack58.mdb",而這個(gè)路徑是不存在的,數(shù)據(jù)庫(kù)連接當(dāng)然會(huì)失敗,于是IIS會(huì)報(bào)錯(cuò),并給出
錯(cuò)誤原因:
Microsoft JET Database Engine
'e:\web\admin\hack58.mdb'不是一個(gè)有效的路徑。 確定路徑名稱拼寫是否正確,以及是否連接到文件存放的服務(wù)器。
/soft/conn.asp,行12
這就是暴庫(kù)語(yǔ)句的原因
三、條件
個(gè)人認(rèn)為暴庫(kù)的條件:
1、一般的錯(cuò)誤返回頁(yè)面是本地IE提供的,所以我們先得關(guān)了本地的
2、對(duì)方數(shù)據(jù)庫(kù)要是Access型。
3、是數(shù)據(jù)庫(kù)連接中沒(méi)有加入容錯(cuò)代碼 所以導(dǎo)致錯(cuò)誤不能跳過(guò)而活生生的把數(shù)據(jù)文件連接暴出來(lái)
4、 對(duì)方的IIS沒(méi)有關(guān)閉
錯(cuò)誤提示 只要關(guān)了
錯(cuò)誤提示就算你怎么暴也沒(méi)有用
5、不一定要2級(jí)目錄 但是肯定的是一級(jí)目錄是絕對(duì)不成功的
6、要成功一定要調(diào)用到數(shù)據(jù)庫(kù) 不一定是view.asp?id=58 這種類別的 只要是提交或者檢測(cè)數(shù)據(jù)的基本都可以
四、注意
1、遇到到ASP或ASA等用迅雷下載后改成MDB后綴照用
2、遇到#改成23%后下載
3、遇到加密的解密后查看相關(guān)信息
4、遇到MD5密碼去網(wǎng)站解密
5、直接瀏覽Conn.asp文件遇到空間時(shí)查看源文件
方法實(shí)踐:
一,關(guān)于"%5c"暴庫(kù)大法:
這種方法被認(rèn)為是暴庫(kù)絕招,很是流行了一陣(隨著知道的人多了,防備也加強(qiáng)了,沒(méi)以前那么有效了)。這種方法,簡(jiǎn)單點(diǎn)說(shuō)就是,打開(kāi)網(wǎng)頁(yè)時(shí),把網(wǎng)址址中的"/"換成"%5c",然后提交,就可以暴出數(shù)據(jù)庫(kù)的路徑。
實(shí)際上,并不是所有網(wǎng)址都有效,需要"asp?id="這樣的網(wǎng)頁(yè)地址(表示有調(diào)用數(shù)據(jù)庫(kù)的行為),如果你確認(rèn)這個(gè)網(wǎng)頁(yè)有調(diào)用數(shù)據(jù)庫(kù)的,后面不是這樣的也可以,比如chklogin.asp等也可以。(當(dāng)然,也還有其它條件,后面再談。)
先舉個(gè)例子,
http://localhost/2222/regs.asp?post=log 把第二個(gè)"/"換成"%5c"
http://localhost/2222%5cregs.asp?post=log
提交后會(huì)得到如下結(jié)果:Microsoft JET Database Engine
'c:\inetpub\wwwroot\db\daidalos.mdb'不是一個(gè)有效的路徑。 確定路徑名稱拼寫是否正確,以及是否連接到文件存放的服務(wù)器。
/2222/db/user.asp,行 6
"%5c"暴庫(kù)法,它不是網(wǎng)頁(yè)本身的漏洞,而是利用了IIS解碼方式中的一個(gè)特性,如果IIS安全設(shè)置不周全,而網(wǎng)頁(yè)設(shè)計(jì)者未考慮IIS錯(cuò)誤,就會(huì)被人利用。
為何要用"%5c"?它實(shí)際上是"\"的十六進(jìn)制代碼,也就是"\"的另一種表示法。在電腦中,它們是一個(gè)東東。
、、、\\\\\\\\\
但提交"\"和"%5c"卻會(huì)產(chǎn)生不同的結(jié)果,在ie中,我們把下面第一個(gè)地址中的"/"換成"\"提交:
http://localhost/2222/regs.asp?post=log
http://localhost/2222\regs.asp?post=log
二者的訪問(wèn)結(jié)果是一樣的。ie會(huì)自動(dòng)把"\"轉(zhuǎn)變成"/",從而訪問(wèn)到同一地址。
但是,當(dāng)我們把"/"換成十六進(jìn)制寫法"%5c"時(shí),ie不會(huì)對(duì)此進(jìn)行轉(zhuǎn)換。地址中的"%5c"被原樣提交了
當(dāng)IIS收到后解析時(shí),又會(huì)將%5c還原成"\"。這樣,iis中網(wǎng)址的相對(duì)路徑就變成
/2222\ regs.asp。這一點(diǎn)很重要。問(wèn)題正是從這里開(kāi)始的
在ASP網(wǎng)頁(yè)中,凡調(diào)用數(shù)據(jù)庫(kù)時(shí),都會(huì)用到一個(gè)連接數(shù)據(jù)庫(kù)的網(wǎng)頁(yè)conn.asp(程序員們都喜歡起這個(gè)名字。不過(guò)今天我們講課用的整站系統(tǒng)的連接數(shù)據(jù)庫(kù)文件的名字是user.asp),它會(huì)創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)連接對(duì)象,定義要調(diào)用的數(shù)據(jù)庫(kù)路徑
我們來(lái)看一下這個(gè)系統(tǒng)的數(shù)據(jù)庫(kù)連接文件。User.asp(和conn.asp一個(gè)作用只不過(guò)名字不一樣)的寫法
<%
dim udb
udb="db/daidalos.mdb"
Set Conn = Server.CreateObject("ADODB.Connection")
myconn="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(""&udb&"")
Conn.Open MyConn
%>
Server.MapPath方法的作用是將網(wǎng)站中的相對(duì)路徑轉(zhuǎn)變成物理上的絕對(duì)路徑。為何要這樣?因?yàn)檫B接數(shù)據(jù)庫(kù)時(shí),須指明它的絕對(duì)路徑。
?。ㄟ@里可能有人不明白,什么相對(duì)路徑、絕對(duì)路徑?IIS為了不讓訪問(wèn)者知道真實(shí)的實(shí)際路徑,并且確保網(wǎng)站不因變換地址而影響使用,它采用了一種相對(duì)路徑來(lái)表示目錄與文件之間的關(guān)系。也就是網(wǎng)址目錄只表示從根目錄起的相對(duì)位置。
Server.MapPath實(shí)際是通過(guò) 網(wǎng)頁(yè)目前執(zhí)行時(shí)所在的相對(duì)路徑,比如上面例子中user.asp調(diào)用的數(shù)據(jù)庫(kù)的相對(duì)路徑是db/daidalos.md,這樣就IIS就確定了數(shù)據(jù)庫(kù)的相對(duì)路徑:"/db/daidalos.mdb"。到這里。還沒(méi)有出現(xiàn)
錯(cuò)誤。
數(shù)據(jù)庫(kù)的調(diào)用需要絕對(duì)路徑。。這些都只是相對(duì)的路徑,如何變?yōu)檎鎸?shí)路徑呢?
Server.MapPath方法正是通過(guò)把"網(wǎng)站根目錄的物理地址+完整的相對(duì)路徑",從而得到真實(shí)的物理路徑。
我們今天的跟目錄地址就是。I:\盜帥下載程序 V2.0 正式版
IIS會(huì)把這兩個(gè)地址相加。得到數(shù)據(jù)庫(kù)地址 I:\盜帥下載程序 V2.0 正式版 +\db\daidalos.md 來(lái)正常調(diào)用。 。到這里。還是沒(méi)有出錯(cuò)。
明白這些,我們?cè)賮?lái)理解暴庫(kù)就不難了,當(dāng)我們提交http:// http://localhost/2222%5cregs.asp?post=log時(shí),regs.asp調(diào)用user.asp后,得到的網(wǎng)頁(yè)相對(duì)路徑是這樣的:/db/user.asp "/db/daidalos.mdb。為數(shù)據(jù)庫(kù)相對(duì)路徑 在iis中,"/"和"\"代表著不同的意義,遇到了"\"時(shí),認(rèn)為它已到了根目錄所在的物理路徑,不考慮是否前面還有任何硬盤目錄。。所以本該數(shù)據(jù)庫(kù)的絕對(duì)路徑是 I:\盜帥下載程序 V2.0 正式版\db\daidalos.mdb。卻因?yàn)镮IS在調(diào)用reg.asp 的時(shí)候。前面有個(gè)\ 于是呼。。。。。。。呼呼呼呼湖。。。就認(rèn)為前面已經(jīng)是跟目錄的物理路徑了。只需要+上目錄就可以完成任務(wù)了。于是+繼續(xù)向更原始的地方去找絕對(duì)路徑。于是呼。找到了他的爺爺。爺爺???爺爺就是網(wǎng)站目錄屬性里對(duì)應(yīng)的東西。我們看下屬性。(本來(lái)是該找爸爸的)C:\Inetpub\wwwroot構(gòu)成了。調(diào)用數(shù)據(jù)庫(kù)的地址。就是這里了。C:\Inetpub\wwwroot\ db\daidalos.md 但是這個(gè)地址不存在啊。數(shù)據(jù)庫(kù)連接當(dāng)然會(huì)失敗,于是IIS會(huì)報(bào)錯(cuò),并給出
錯(cuò)誤原因
Microsoft JET Database Engine
'c:\inetpub\wwwroot\db\daidalos.mdb'不是一個(gè)有效的路徑。 確定路徑名稱拼寫是否正確,以及是否連接到文件存放的服務(wù)器。
/2222/db/user.asp,行 6
這就是暴庫(kù)語(yǔ)句的來(lái)歷。
二,conn.asp暴庫(kù)大法
這里,conn.asp只是表示數(shù)據(jù)庫(kù)調(diào)用文件,因?yàn)槎鄶?shù)都是這個(gè)名字(有些網(wǎng)站改名,我們也視同conn.asp)。其實(shí),這種暴庫(kù)法是最先出現(xiàn)的,以前很多牛人都對(duì)此進(jìn)行過(guò)探討。只是在"%5c"暴庫(kù)大法出現(xiàn)后,倒較少有人提及。
我們?cè)賮?lái)ASP系統(tǒng)一個(gè)盜帥的例子
提交
_ http://localhost/2222/db/user.asp
得到如下結(jié)果:Microsoft JET Database Engine
'I:\盜帥下載程序 V2.0 正式版\db\db\daidalos.mdb'不是一個(gè)有效的路徑。 確定路徑名稱拼寫是否正確,以及是否連接到文件存放的服務(wù)器。
/2222/db/user.asp,行 6
有人可能會(huì)說(shuō),這么簡(jiǎn)單就暴庫(kù),好爽!是不是所有網(wǎng)站都可以這樣?。慨?dāng)然不是,已作了防護(hù)的肯定不行,沒(méi)作防護(hù)的,要暴庫(kù)也是有條件的。
如果說(shuō)第一種暴庫(kù)法是利用了絕對(duì)路徑出錯(cuò),那么,這種暴庫(kù)法就是利用了相對(duì)路徑出錯(cuò)。
一般來(lái)說(shuō),只要conn.asp不在根目錄的系統(tǒng),而調(diào)用文件在根目錄,就會(huì)出現(xiàn)這種問(wèn)題。當(dāng)然這種說(shuō)法也是經(jīng)驗(yàn)性的,準(zhǔn)確的說(shuō)就是,conn.asp與調(diào)用它的文件,如果相對(duì)位置改變了,就會(huì)報(bào)錯(cuò),暴出數(shù)據(jù)庫(kù)路徑。這樣說(shuō)可能有人不明白,不要緊,接著看你就會(huì)明白的
文章系統(tǒng)的 user.asp位于db目錄下,而很多調(diào)用它的文件在系統(tǒng)根目錄下,比如regs.asp等,這樣當(dāng)conn.asp執(zhí)行時(shí),它是在系統(tǒng)根目錄I:\盜帥下載程序 V2.0 正式版\下執(zhí)行的,因此,conn.asp文件中,調(diào)用數(shù)據(jù)庫(kù)時(shí),它考慮到執(zhí)行時(shí)的目錄路徑,因而數(shù)據(jù)庫(kù)的相對(duì)地址寫成如下:
dim udb
udb=" db/daidalos.mdb"
這樣,當(dāng)它在系統(tǒng)根目錄下執(zhí)行時(shí),數(shù)據(jù)庫(kù)的相對(duì)路徑為根目錄下的"db"目錄內(nèi)。這是很正常的情況。。但是當(dāng)我們直接請(qǐng)求它時(shí),它工作的當(dāng)前目錄是在根目錄下的db目錄內(nèi),這時(shí),數(shù)據(jù)庫(kù)的相對(duì)路徑就變成了" db/db/daidalos.mdb ",這樣它當(dāng)然出錯(cuò)。得到的絕對(duì)路徑中多出了"inc。
三,暴庫(kù)的防范
說(shuō)白了,暴庫(kù)是因?yàn)椋桑桑臃?wù)器會(huì)對(duì)每個(gè)執(zhí)行錯(cuò)誤給出詳細(xì)說(shuō)明,并停止執(zhí)行,而IIS的默認(rèn)設(shè)置又是將
錯(cuò)誤信息返回給用戶。因此,要避免暴庫(kù),就應(yīng)改變IIS的默認(rèn)設(shè)置,選取
錯(cuò)誤時(shí)只給一個(gè)出錯(cuò)的頁(yè)面,不給詳細(xì)信息。如
"處理 URL 時(shí)服務(wù)器出錯(cuò)。請(qǐng)與系統(tǒng)管理員聯(lián)系。"
其實(shí),作為網(wǎng)站管理者,無(wú)法對(duì)虛擬主機(jī)設(shè)置時(shí),只能在網(wǎng)頁(yè)中加強(qiáng)防范。就是在可能出錯(cuò)的頁(yè)面加上這一句:
"On Error Resume Next",特別是在conn.asp文件中要加上。
它的意思是出錯(cuò)后,恢復(fù)執(zhí)行下面的,也就是不理會(huì)出錯(cuò),當(dāng)然就不會(huì)給出
錯(cuò)誤信息了。