论坛: 菜鸟乐园 标题: 关于%5c暴库大法(转) 复制本贴地址    
作者: xww8258 [xww8258]    论坛用户   登录
一,关于"%5c"暴库大法:8+

这种方法被认为是暴库绝招,很是流行了一阵(随着知道的人多了,防备也加强了,没以前那么有效了)。这种方法,简单点说就是,打开网页时,把网址址中的"/"换成"%5c",然后提交,就可以暴出数据库的路径。  实际上,并不是所有网址都有效,需要"asp?id="这样的网页地址(表示有调用数据库的行为),如果你确认这个网页有调用数据库的,后面不是这样的也可以,比如chklogin.asp等也可以。(当然,也还有其它条件,后面再谈。)=/}B0

先举个例子,:
_blank>_blank>http://219.237.81.46/yddown%5cview.asp?id=3wx}
把第二个"/"换成"%5c"0e
_blank>_blank>http://219.237.81.46/yddown%5cview.asp?id=3X
提交后会得到如下结果:
Microsoft JET Database Engine 错误 '80004005' B44!
©[PCPING.cn]论坛 -- 黑客技术  QgE
'D:\111\admin\rds_dbd32rfd213fg.mdb'不是一个有效的路径。 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。 3&
©[PCPING.cn]论坛 -- 黑客技术  dNS5
/yddown/conn.asp,行12 Xf}
©[PCPING.cn]论坛 -- 黑客技术  {\
(说明:这是黑防实验室的一个网站,暴库是他们故意开放的,因为它的关口不是注入,而是进入后台后如何获得shell)。~FUah
©[PCPING.cn]论坛 -- 黑客技术  s
现在很多人都知道这个方法了,我就不多举例了。但清楚暴库原理的人估计是不多的。有人成功,有人不成功,《再谈%5c暴库的利用》一文总结说,须变换第二个"/"为"%5c"才行。很有实用性,但这个结论只是一种经验,其实并不正确。让我们先看看它的原理H
©[PCPING.cn]论坛 -- 黑客技术  x{Z9>
"%5c"暴库法,它不是网页本身的漏洞,而是利用了IIS解码方式中的一个特性,如果IIS安全设置不周全,而网页设计者未考虑IIS错误,就会被人利用。=
  为何要用"%5c"?它实际上是"\"的十六进制代码,也就是"\"的另一种表示法。在电脑中,它们是一个东东。(十六进制转换图)$*"CG@
©[PCPING.cn]论坛 -- 黑客技术  ZJ/&Xc
但提交"\"和"%5c"却会产生不同的结果,在ie中,我们把下面第一个地址中的"/"换成"\"提交:[_!
_blank>http://219.237.81.46/yddown/view.asp?id=3>68Ix
©[PCPING.cn]论坛 -- 黑客技术  _n#-
_blank>http://219.237.81.46/yddown\view.asp?id=3-shb
©[PCPING.cn]论坛 -- 黑客技术  "
二者的访问结果是一样的。ie会自动把"\"转变成"/",从而访问到同一地址。Rl
但是,当我们把"/"换成十六进制写法"%5c"时,ie不会对此进行转换。地址中的"%5c"被原样提交了。这是抓包结果:>
©[PCPING.cn]论坛 -- 黑客技术  m(f#(
GET /yddown%5cview.asp?id=3 HTTP/1.1P0<0U
&copy;[PCPING.cn]论坛 -- 黑客技术  Lf?
当IIS收到后解析时,又会将%5c还原成"\"。这样,iis中网址的相对路径就变成/yddown\view.asp。这一点很重要。问题正是从这里开始的。8#M
&copy;[PCPING.cn]论坛 -- 黑客技术  ArOF\
在ASP网页中,凡调用数据库时,都会用到一个连接数据库的网页conn.asp,它会创建一个数据库连接对象,定义要调用的数据库路径[`|
一个典型的conn.asp如下:R+&@
&copy;[PCPING.cn]论坛 -- 黑客技术  1&q5
&copy;[PCPING.cn]论坛 -- 黑客技术  kq
&copy;[PCPING.cn]论坛 -- 黑客技术  *Z`w
大家注意第4句:DBPath = Server.MapPath("admin/rds_dbd32rfd213fg.mdb"),Server.MapPath方法的作用是将网站中的相对路径转变成物理上的绝对路径。为何要这样?因为连接数据库时,须指明它的绝对路径。pvlJ<[
(这里可能有人不明白,什么相对路径、绝对路径?IIS为了不让访问者知道真实的实际路径,并且确保网站不因变换地址而影响使用,它采用了一种相对路径来表示目录与文件之间的关系。也就是网址目录只表示从根目录起的相对位置。akWT,u
&copy;[PCPING.cn]论坛 -- 黑客技术  9_\1
  比如:上面的网站中,网站:_blank>http://219.237.81.46的根目录为:"D:\111\"雨点下载目录则在根目录(D:\111)内的"yddown"下,我们网站访问该站时,就是在访问D:\111\yddown\目录,而http://219.237.81.46/yddown/admin/,它只表明了admin与yddown这个目录的相对关系,把这个网站放在e:盘,也一样不改变admin位于yddown目录下的关系。X:S?-
&copy;[PCPING.cn]论坛 -- 黑客技术  pJd[?R
  当Server.MapPath方法将相对路径转为真实路径时,它实际是三部分路径加在一起得到真实路径的:网页目前执行时所在的相对路径,也就是从网站物理根目录起的相对路径,比如上面例子中conn.asp处在从根目录起的"/yddown/"下;然后调用的数据库的相对路径是admin/rds_dbd32rfd213fg.mdb,这样就得到从根目录起的完整相对路径:"/yddown/admin/rds_dbd32rfd213fg.mdb"。-|]?
&copy;[PCPING.cn]论坛 -- 黑客技术  p9uMIU
这些都只是相对的路径,如何变为真实路径呢?8>M
  设置过iis的人都会知道,每一个网站,都必须指定它在硬盘上的物理目录,比如上例中,网站根目录所在的物理目录为:"D:\111",Server.MapPath方法正是通过把"网站根目录的物理地址+完整的相对路径",从而得到真实的物理路径。这样,数据库在硬盘上的物理路径是:d:\111\yddown\admin\rds_dbd32rfd213fg.mdb。.9M
 在这里,IIS以"\"表示真实路径的目录关系,而以"/"表示虚拟路径,这可能就是IE会自动把我们地址中的"\"转为"/"的原因吧。oBLcy
&copy;[PCPING.cn]论坛 -- 黑客技术  \
  明白这些,我们再来理解暴库就不难了,当我们提交_blank>http://219.237.81.46/yddown%5cview.asp?id=3时,view.asp调用conn.asp后,得到的网页相对路径是这样的:/yddown\ (见上),再加上"admin/rds_dbd32rfd213fg.mdb",就得到"/yddown\"+admin/rds_dbd32rfd213fg.mdb。在iis中,"/"和"\"代表着不同的意义,遇到了"\"时,认为它已到了根目录所在的物理路径,不再往上解析(为何不再往上解析?后面还会分析的),于是网站的完整相对路径变成了Cgo9
:"admin/rds_dbd32rfd213fg.mdb",再加上根目录的物理路径,得到的真实路径变成:"D:\111\admin\rds_dbd32rfd213fg.mdb",而这个路径是不存在的,数据库连接当然会失败,于是IIS会报错,并给出错误原因:}2R
Microsoft JET Database Engine 错误 '80004005' ]R
&copy;[PCPING.cn]论坛 -- 黑客技术  kEA!;Y
'D:\111\admin\rds_dbd32rfd213fg.mdb'不是一个有效的路径。 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。 |^+Xx5
&copy;[PCPING.cn]论坛 -- 黑客技术  P
/yddown/conn.asp,行12U:!
这就是暴库语句的来历。`h
&copy;[PCPING.cn]论坛 -- 黑客技术  qCrr
  《再谈%5c暴库的利用》一文中说,必须是网址中的第二个才可以成功,第一个不行。我们从理论上来分析一下,看到底有无规律:a
 还以上面网址为例,如果将第一个"/"换成"%5c",得到的网站相对路径变成\yddows/admin/rds_dbd32rfd213fg.mdb,解析到"\"时,认为已到物理目录,不再往前解析。而事实上,它确实也是根目录,所以得到的物理路径为:"D:\111\dydow\admin\rds_dbd32rfd213fg.mdb"S
这个路径是正确的,所以不会出错,当然不会暴出数据库路径。Al
&copy;[PCPING.cn]论坛 -- 黑客技术  b
 第二个个"/"换成"%5c"的情况,我们上面已作分析,那是不是真的就第二个可以暴出呢,事实上,它只是因为二级网站较为常见,并不是真理。如果这个下载系统是某一个网站中的三级目录,变第三个也是可以的。有时,变第三个成功的可能性更大。也就是说,最右边第一个成功可能性大。.+
不信?我先举个例子,再说原因:8g8h
&copy;[PCPING.cn]论坛 -- 黑客技术  4FzNJ
_id=31&log_id=246" target=_blank>http://nice.xmu.edu.cn/channely% ... d=31&log_id=246c
&copy;[PCPING.cn]论坛 -- 黑客技术  q
这个网址,变第二个"/"为"%5c"时,网站打开很慢,但没有出错。1Le\
当我们把第三个"/"变成"%5c"后,提交:I
&copy;[PCPING.cn]论坛 -- 黑客技术  5
_id=31&log_id=246" target=_blank>http://nice.xmu.edu.cn/channely/ ... d=31&log_id=246(1X
&copy;[PCPING.cn]论坛 -- 黑客技术  {90O
可以看到,数据库暴出来了!:A1
Microsoft JET Database Engine 错误 '80004005' Ek
&copy;[PCPING.cn]论坛 -- 黑客技术  P
'H:\channely\log_mdb\%29dlog_mdb%29.asp'不是一个有效的路径。 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。 \c$'0
&copy;[PCPING.cn]论坛 -- 黑客技术   kn}c
/channely/blog/conn.asp,行18 vV[
为何这样?1!
这是因为网站内用了虚拟目录,也就是说这个网站的子目录channely并不在网站根目录内,设置过IIS的人会知道,可以将网站目录外的一个真实物理目录设置为网站的虚拟目录。也就是说,网站的相对对径并不总是从根目录算起,很可能在某个子目录就指向了物理目录。@vO#F6
上面的结果很显然:channely已位于H:盘的根目录上,上面再没有目录。事实上,很可能网站在d:盘或e:盘,而通过IIS中设置channely虚拟子目录指向网站根目录以外的"H:\channely\",这里,我们可以更清楚的看到,微软iis为何没有到根目录,只要遇上"\"就认为已到物理绝对路径,不再往上解析的原因,就是为了处理这种网站虚拟目录与根目录不在一起的情况。它优先查询每个目录是否指向了物理路径,如果指向了,则把它换成绝对路径,而它上面的相对地址不再解析转换。)$WQ
&copy;[PCPING.cn]论坛 -- 黑客技术  f)P
 从以上分析可知,我们只有在数据库相对地址和它的目录绝对地址之间使用"\"("%5c"),才能达到目的。上例中,如果在第二处使用,它只会影响到IIS寻找虚拟的channely目录地址,而conn.asp中解析出的数据库地H:\channely\blog、log_mdb\%29dlog_mdb%29.asp仍是对的,当然不会暴库。b
&copy;[PCPING.cn]论坛 -- 黑客技术  j{Z
《再谈%5c暴库的利用》中还说了一种针对只有一级目录的解决方法:zp?c
"其实一级目录我们也同样可以成功的,我们可以通过构造一个多级目录来达到暴库的目的。:+]/
如下:r
_blank>http://www.target.com/noexists/..%5clist.asp?id=1L8RtI
&copy;[PCPING.cn]论坛 -- 黑客技术  <!g"!6
这样大家就会有新的惊喜了,呵呵。"pv:b
真的吗?从理论上分析,这种方法是不会成功的。因为遇到"%5c"时,不再解析,所以中间构造的目录,不论是真是假,都是不起作用的,被舍弃了,相对路径还是到了根目录,路径不会出错。为了证明,我特意找了一个例子:QO'0
&copy;[PCPING.cn]论坛 -- 黑客技术  45M^R
_Show.asp?ArticleID=481" target=_blank>http://www.om88.com/Article_Show.asp?ArticleID=481stz
&copy;[PCPING.cn]论坛 -- 黑客技术  1q|r
这个网站我们先用conn.asp方法暴出数据库(后面将讲的),说明服务器和网站设置是可以暴库的。T-
&copy;[PCPING.cn]论坛 -- 黑客技术  >OX<v
_blank>http://www.om88.com/inc/conn.asp\EN
&copy;[PCPING.cn]论坛 -- 黑客技术  BK
得到如下结果moZ<
&copy;[PCPING.cn]论坛 -- 黑客技术  }I>MU
_Show.asp?ArticleID=481" target=_blank>http://www.om88.com/abc/..%5cArticle_Show.asp?ArticleID=481f
&copy;[PCPING.cn]论坛 -- 黑客技术  9kK|bg
却暴不出库,仍得到正常页面(换成存在的路径结果也一样),但图片无法显示。这是因为相对路径变了Cu{
二,conn.asp暴库大法i?
这里,conn.asp只是表示数据库调用文件,因为多数都是这个名字(有些网站改名,我们也视同conn.asp)。其实,这种暴库法是最先出现的,以前很多牛人都对此进行过探讨。只是在"%5c"暴库大法出现后,倒较少有人提及。其实个人认为,"%5c"暴大法随着服务器设置安全性的加强,用武之地会越来越少。而conn.asp暴库大法发挥的余地更大,可以人为构造,臭要饭的当年著名的动网大挪移实现暴库,其实也属于此类。u0!cb
&copy;[PCPING.cn]论坛 -- 黑客技术  Zpez<
上面_blank>http://www.om88.com/JT,Th
&copy;[PCPING.cn]论坛 -- 黑客技术  fXu
一例中,用"%5c"暴不出数据库路径,因为没有二级目录,但用第二种却可以暴出。它是动力系统的。%d'(
我们再来看另外一个ASP系统一个盗帅的例子:_blank>http://www.51see.org/.
&copy;[PCPING.cn]论坛 -- 黑客技术  1j~-KQ
提交&copy;[PCPING.cn]论坛 -- 黑客技术  *:8!\[
_blank>http://www.51see.org/db/user.asp<khwT{
&copy;[PCPING.cn]论坛 -- 黑客技术  O2
得到如下结果:y
"Microsoft JET Database Engine 错误 '80004005' n=
&copy;[PCPING.cn]论坛 -- 黑客技术  |$$
'd:\Hosting\wwwroot\uilady_com\htdocs\db\db\downloadwoaini12345.asp'不是一个有效的路径。 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。 &vFr#
&copy;[PCPING.cn]论坛 -- 黑客技术  '*-;nf
/db/user.asp,行6 "H;T
&copy;[PCPING.cn]论坛 -- 黑客技术  W (l#
有人可能会说,这么简单就暴库,好爽!是不是所有网站都可以这样啊?当然不是,已作了防护的肯定不行,没作防护的,要暴库也是有条件的。e!7l<
&copy;[PCPING.cn]论坛 -- 黑客技术  @P9vZj
如果说第一种暴库法是利用了绝对路径出错,那么,这种暴库法就是利用了相对路径出错。xp6
一般来说,只要conn.asp不在根目录的系统,而调用文件在根目录,就会出现这种问题。当然这种说法也是经验性的,准确的说就是,conn.asp与调用它的文件,如果相对位置改变了,就会报错,暴出数据库路径。这样说可能有人不明白,不要紧,接着看你就会明白的。:q|K
&copy;[PCPING.cn]论坛 -- 黑客技术  -:/E
我们从动力文章系统说起:G>
动力文章系统的conn.asp位于系统的inc目录下,而很多调用它的文件在系统根目录下,比如User_ChkLogin.asp等,这样当conn.asp执行时,它是在系统根目录D:\wwwroot\zyx688\wwwroot\下执行的,因此,conn.asp文件中,调用数据库时,它考虑到执行时的目录路径,因而数据库的相对地址写成如下:)
dim db4]
db="database/fp360609.asp" 4+
&copy;[PCPING.cn]论坛 -- 黑客技术  :u
这样,当它在系统根目录下执行时,数据库的相对路径为根目录下的"database"目录内。但当我们直接请求它时,它工作的当前目录是在根目录下的INC目录内,这时,数据库的相对路径就变成了"inc/database/fp360609.asp",这样它当然出错。得到的绝对路径中多出了"inc。为了让大家看得更清楚,我们举一个可以用两种方法暴库的网站,比较一下看有何不同:c4;
&copy;[PCPING.cn]论坛 -- 黑客技术  aF
提交:_blank>http://www.pofen.com/sc/down%5cshow.asp?id=437#Awc
得到:Gy
"Microsoft JET Database Engine 错误 '80004005' Yr}_
&copy;[PCPING.cn]论坛 -- 黑客技术  xtIK1s
'D:\Webdata\pofen.com\sc\db\download.mdb'不是一个有效的路径。 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。 I
&copy;[PCPING.cn]论坛 -- 黑客技术  [1R
/sc/down/db/user.asp,行6 "ll|}
&copy;[PCPING.cn]论坛 -- 黑客技术  U:aePg
再提交:_blank>http://www.pofen.com/sc/down/db/user.aspp+_)X)
&copy;[PCPING.cn]论坛 -- 黑客技术  &JB?9V
得到:+.`cp!
"Microsoft JET Database Engine 错误 '80004005' 0D[)
&copy;[PCPING.cn]论坛 -- 黑客技术  ,
'D:\Webdata\pofen.com\sc\down\db\db\download.mdb'不是一个有效的路径。 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。 Vm
&copy;[PCPING.cn]论坛 -- 黑客技术  1
/sc/down/db/user.asp,行6 "aw\
两种方法得到的绝对路径,一个比实际路径少了,一个则多了,所以路径错误而报错暴出数据库。 wEAU
这两个系统都是因为conn.asp不在系统根目录下,而引起的。(其实这样的系统不止两个)。5Wy
&copy;[PCPING.cn]论坛 -- 黑客技术  -9
那是不是conn.asp放在根目录,与调用的文件在一个目录下就无事呢?如果在一起,当然没事,但牛人自有牛法子,可以通过构造方法来造成相对路径变化,一样能达到暴库的目的。比如,动网的大挪移手法,将conn.asp移位,从而暴库。当然,实际操作中,因为conn.asp移走后,网站无法工作,所以没有成功。但这种思路还是给很多人启发。如果有一种方法可以复制而不是移动,或者说,移动的不是conn.asp,而是调用conn.asp的其它文件比如chklogin之类的,理论上就可以成功。(当然,如果服务器和网页对暴库进行了安全处理,就是另一回事)。这种方法,当也就是一些牛人把网页存到本地改路径而搞出来的。今天刚看到一个暴动易数据库的最新方法,其原理也是构造错误而达到获得真实路径的目的。=U
&copy;[PCPING.cn]论坛 -- 黑客技术  (WWE
三,暴库的防范*
说白了,暴库是因为IIS服务器会对每个执行错误给出详细说明,并停止执行,而IIS的默认设置又是将错误信息返回给用户。因此,要避免暴库,就应改变IIS的默认设置,选取错误时只给一个出错的页面,不给详细信息。hxJil
"处理 URL 时服务器出错。请与系统管理员联系。"d
其实,作为网站管理者,无法对虚拟主机设置时,只能在网页中加强防范。就是在可能出错的页面加上这一句:zRYz
"On Error Resume Next",特别是在conn.asp文件中要加上。}>$4X
它的意思是出错后,恢复执行下面的,也就是不理会出错,当然就不会给出错误信息了。Ggz
动易系统3.62版的加上后,现在就暴不出路径了。而天意商务网,conn.asp也不在根目录,但因为加了这句,也暴不出数据库

地主 发表时间: 06-04-17 14:21

回复: BearKing [bking]   版主   登录
不错,支持一下!

B1层 发表时间: 06-04-19 20:04

回复: studentol [studentol]   论坛用户   登录


B2层 发表时间: 06-04-21 20:55

论坛: 菜鸟乐园

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号