主页 PC知识 网管技术 黑客帝国 安全技术 开放系统 程序设计 搜索 技术论坛

 

相关联接
 
RHU本级分类

新手入门
入侵实例
工具使用
安全防范
黑客人物
软件破解
漏洞研究

 
RHU阅读排行
·穿透防火墙的数据传输方法(附源码)
·简介For命令具体格式以及在Windows中的妙用
·2003gui界面下手工开3389(图)
·用dos命令破解远程NT用户密码
·劫持数据库实现跨站攻击实例图解
·利用ICMP请求报文探测主机操作系统
·CGI漏洞攻击手册version-0.02
·如何突破一个有限制的SHELL
·SSL/TLS/WTLS原理
·在肉鸡上安装隐蔽的ftp服务器

 
 
RHU最新文章
·经典入侵检测术语全接触
·黑客域名劫持攻击详细步骤
·通过注射改管理员密码
·简简单单清除肉鸡上的日志文件
·[基础]Mysql 基本的常用命令
·autorun.inf操作手册
·入侵中快速获得Web根目录的技巧
·浅谈javascript函数劫持
·溢出的原理技术大全
·挂马的一些小代码

 
 
RHU相关搜索









 
 
RHU广而告之

 
 
>您的位置:首页 -> 黑客帝国-> 新手入门
安全基础知识 细说暴库的原理与方法

作者:RHU-TAC编辑员 来自:RHU网络采集 时间:2007-11-13 双击滚屏 收藏本页 字体:


点击 查看RHU2004全年文章


SQL注入流行很久了,我们找漏洞注入目的无非是想得到数据库内的东西,比如用户名密码等。(当然mssql数据库还可以借此获得权限)。如果我们不用注入就可以得到整个数据库,不是更好吗?于是暴库成了一个比注入更简单的的入侵手段。

  有关暴库的方法,高手们常在入侵文章中提高,但多是一笔带过,有些就某一个方法谈的,也多是就方法进行探讨。最近有一篇《再谈%5c暴库的利用》文章,算是对暴库进行了一些总结,因而在网是流传很广。但仍没有谈及原理,而且结论也只是就于经验,似是而非,于是决定来谈谈暴库的原理与规律。

  一,关于"%5c"暴库大法:

  这种方法被认为是暴库绝招,很是流行了一阵(随着知道的人多了,防备也加强了,没以前那么有效了)。这种方法,简单点说就是,打开网页时,把网址址中的"/"换成"%5c",然后提交,就可以暴出数据库的路径。

  实际上,并不是所有网址都有效,需要"asp?id="这样的网页地址(表示有调用数据库的行为),如果你确认这个网页有调用数据库的,后面不是这样的也可以,比如chklogin.asp等也可以。(当然,也还有其它条件,后面再谈。)

  先举个例子,
http://219.237.81.46/yddown%5cview.asp?id=3
  把第二个"/"换成"%5c"
http://219.237.81.46/yddown%5cview.asp?id=3
  提交后会得到如下结果:

  Microsoft JET Database Engine 错误 ’80004005’

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

  /yddown/conn.asp,行12

  (说明:这是黑防实验室的一个网站,暴库是他们故意开放的,因为它的关口不是注入,而是进入后台后如何获得shell)。

  现在很多人都知道这个方法了,我就不多举例了。但清楚暴库原理的人估计是不多的。有人成功,有人不成功,《再谈%5c暴库的利用》一文总结说,须变换第二个"/"为"%5c"才行。很有实用性,但这个结论只是一种经验,其实并不正确。让我们先看看它的原理 "%5c"暴库法,它不是网页本身的漏洞,而是利用了IIS解码方式中的一个特性,如果IIS安全设置不周全,而网页设计者未考虑IIS错误,就会被人利用。

  为何要用"%5c"?它实际上是"\"的十六进制代码,也就是"\"的另一种表示法。在电脑中,它们是一个东东。(十六进制转换图)

  但提交"\"和"%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"被原样提交了。这是抓包结果:

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

  不信?我先举个例子,再说原因:

http://nice.xmu.edu.cn/channely%5cblog/showlog.asp?cat_id=31&log_id=246

  这个网址,变第二个"/"为"%5c"时,网站打开很慢,但没有出错。

  当我们把第三个"/"变成"%5c"后,提交:

  http://nice.xmu.edu.cn/channely/blog%5cshowlog.asp?cat_id=31&log_id=246

  可以看到,数据库暴出来了!

  Microsoft JET Database Engine 错误 ’80004005’

  ’H:\channely\log_mdb\%29dlog_mdb%29.asp’不是一个有效的路径。 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。

  /channely/blog/conn.asp,行18

[本文共有 2 页,当前是第 1 页] <<上一页 下一页>>

OVER

[1] [2] 页 RedHyphone.Union 投稿邮箱
[特别声明]:
本站文章大多搜索转载自网络中,如果侵犯了您的权利,请告之我们。本站将立即删除。
本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
查看评论】【向上滚屏】【关闭窗口】【 打印
-相关文章
  • 系统安全小技巧:组策略保障共享目录安全
  • 可执行文件的 MD5 碰撞
  • 实例讲解Cookies欺骗与session欺骗入侵
  • 巧论ARP攻击防制方法之虚虚实实
  • 经典入侵检测术语全接触
  • -文章评论 (关闭)
    ·还没有相关的评论!

    网上大名:
    红旋风网络技术联盟 RHUTech.Union
     
    Copyright © 2000-2007 RedHyphone.Union All Rights Reserved. 红旋风联盟版权所有.皖ICP备05011033号
    中国红旋风网络技术联盟 | www.RedHyphone.net
    Mailto:Redhyphone@gamil.com