%5C暴库原理

  暴库有两个方法,第一个就是利用%5c,另外一个conn.asp暴库。而且这里的暴库是针对access数据库的,而和access搭配的脚本一般是asp,因此出现暴库的一般为asp类型站点。

  ASP是动态服务器页面(Active Server Pages)的英文缩写,后来也称为经典ASP,是微软公司开发的代替CGI脚本程序的一种应用,也是微软公司的第一个服务器侧的脚本引擎,能够动态产生Web页面。ASP可以与Web数据库以及其它程序进行交互,是一种简单、方便的编程工具。ASP的网页文件的格式是.asp,曾用于各种动态网站中。

ASP使用服务器侧的脚本生成页面内容并发给访问者的页面浏览器。ASP解释器读取并执行所有在<%和%>标签之间的脚本代码,并生成内容。这些脚本使用VBScript, JScript和PerlScript编写。@Language指令,<script language="manu" runat="server" />句法或服务器配置都可用于选择语言。
.asp扩展名的Web页面使用ASP技术,一些Web站点为了安全目的,会通过使用更常见的.htm或.html扩展名来伪装他们对脚本语言的选择。.aspx扩展名的页面使用ASP.NET。但是ASP.NET页面也可以包含一些ASP脚本。当介绍ASP.NET时,往往使用经典ASP这一术语来表示原始的ASP技术。

 %5c暴库

 简单点说,就是在打开页面的时候把网页中的/换成%5c,然后提交就可以得到数据库地址了,但并不是所有页面都可以成功,而需要asp?id=这样的地址。因为这样的网址表示页面调用了数据库

首先,要产生 %5c 暴库漏洞,必须要求访问的网页中有数据库调用。其原因是不言而喻的,只有数据库调用的页面,才会“include”包含数据库连接文件“conn.asp”。

另外,要求使用 %5c 解码提交的页面,至少为二级目录,也就是说,必须形如“http://www.abc.com/2/*.asp”或“http://www.abc.com/2/3/*.asp”之类的链接才可以进行 %5c 暴库。而一级目录是无法暴库成功的,类似“http://www.abc.com/*.asp”之类的链接,都无法进行 %5c 暴库。

在暴库时,并不限于将网址链接中的第二个“/”换成“%5c”,事实上,将多级目录之后的“/”更换为“%5c”,暴库的成功率更高。例如,某网站的链接为三级目录“http://www.abc.com/2/3/test”,提交“http://www.abc.com/2%5c3/test.asp”暴库不成功时,提交“http://www.abc.com/2/3%5ctest.asp”反而有可能成功。

之所以会出现二级目录暴库不成功,但三级目录暴库成功的情况,往往是由于网站采用了虚拟目录。在上面的示例中,网站的子目录“2”可能是一个虚拟目录,“2”并不一定在网站根目录“D:\web”之下。虚拟目录“2”的真实物理目录,有可能是任意的分区路径,位于“E:\2”、“H:\2”都是可以的。


"%5c"暴库法,它不是网页本身的漏洞,而是利用了IIS解码方式中的一个特性,如果IIS安全设置不周全,而网页设计者未考虑IIS错误,就会被人利用。  
  为何要用"%5c"?它实际上是"\"的十六进制代码,也就是"\"的另一种表示法。在电脑中,它们是一个东西。(图2)(十六进制转换图)  

但提交"\"和"%5c"却会产生不同的结果,在ie中,我们把下面第一个地址中的"/"换成"\"提交:  
http://219.237.81.46/yddown/view.asp?id=3  

http://219.237.81.46/yddown\view.asp?id=3  

二者的访问结果是一样的。ie会自动把"\"转变成"/",从而访问到同一地址。  
但是,当我们把"/"换成十六进制写法"%5c"时,ie不会对此进行转换。地址中的"%5c"被原样提交了。这是抓包结果:(图3)  

GET /yddown%5cview.asp?id=3 HTTP/1.1  

当IIS收到后解析时,又会将%5c还原成"\"。这样,iis中网址的相对路径就变成/yddown\view.asp。这一点很重要。问题正是从这里开始的。  

在ASP网页中,凡调用数据库时,都会用到一个连接数据库的网页conn.asp,它会创建一个数据库连接对象,定义要调用的数据库路径  
一个典型的conn.asp如下:  

<%  
 dim conn  
 dim dbpath  
 set conn=server.createobject("adodb.connection")  
 DBPath = Server.MapPath("admin/rds_dbd32rfd213fg.mdb")  
 conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath  
%> 


大家注意第4句:DBPath = Server.MapPath("admin/rds_dbd32rfd213fg.mdb"),Server.MapPath方法的作用是将网站中的相对路径转变成物理上的绝对路径。为何要这样?因为连接数据库时,须指明它的绝对路径。  
(这里可能有人不明白,什么相对路径、绝对路径?IIS为了不让访问者知道真实的实际路径,并且确保网站不因变换地址而影响使用,它采用了一种相对路径来表示目录与文件之间的关系。也就是网址目录只表示从根目录起的相对位置。  

  比如:上面的网站中,网站: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目录下的关系。  

  当Server.MapPath方法将相对路径转为真实路径时,它实际是三部分路径加在一起得到真实路径的:网页目前执行时所在的相对路径,也就是从网站物理根目录起的相对路径,比如上面例子中conn.asp处在从根目录起的"/yddown/"下;然后调用的数据库的相对路径是admin/rds_dbd32rfd213fg.mdb,这样就得到从根目录起的完整相对路径:"/yddown/admin/rds_dbd32rfd213fg.mdb"。  

这些都只是相对的路径,如何变为真实路径呢?  
  设置过iis的人都会知道,每一个网站,都必须指定它在硬盘上的物理目录,比如上例中,网站根目录所在的物理目录为:"D:\111",Server.MapPath方法正是通过把"网站根目录的物理地址+完整的相对路径",从而得到真实的物理路径。这样,数据库在硬盘上的物理路径是:d:\111\yddown\admin\rds_dbd32rfd213fg.mdb。  
 在这里,IIS以"\"表示真实路径的目录关系,而以"/"表示虚拟路径,这可能就是IE会自动把我们地址中的"\"转为"/"的原因吧。  

  明白这些,我们再来理解暴库就不难了,当我们提交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中,"/"和"\"代表着不同的意义,遇到了"\"时,认为它已到了根目录所在的物理路径,不再往上解析(为何不再往上解析?后面还会分析的),于是网站的完整相对路径变成了 :"admin/rds_dbd32rfd213fg.mdb",再加上根目录的物理路径,得到的真实路径变成:"D:\111\admin\rds_dbd32rfd213fg.mdb",而这个路径是不存在的,数据库连接当然会失败,于是IIS会报错,并给出错误原因:  
Microsoft JET Database Engine 错误 ’80004005’  

’D:\111\admin\rds_dbd32rfd213fg.mdb’不是一个有效的路径。 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。  

/yddown/conn.asp,行12  
这就是暴库语句的来历。  

  《再谈%5c暴库的利用》一文中说,必须是网址中的第二个才可以成功,第一个不行。我们从理论上来分析一下,看到底有无规律:  
 还以上面网址为例,如果将第一个"/"换成"%5c",得到的网站相对路径变成\yddows/admin/rds_dbd32rfd213fg.mdb,解析到"\"时,认为已到物理目录,不再往前解析。而事实上,它确实也是根目录,所以得到的物理路径为:"D:\111\dydow\admin\rds_dbd32rfd213fg.mdb"  
这个路径是正确的,所以不会出错,当然不会暴出数据库路径。  

 第二个个"/"换成"%5c"的情况,我们上面已作分析,那是不是真的就第二个可以暴出呢,事实上,它只是因为二级网站较为常见,并不是真理。如果这个下载系统是某一个网站中的三级目录,变第三个也是可以的。有时,变第三个成功的可能性更大。也就是说,最右边第一个成功可能性大。 





【参考】

%5C暴库原理

关于%5C暴库大法

暴库实验环境与步骤

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值