如何简单获取目标网站的数据库

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

SQL注入流行很久了,我们找漏洞注入目的无非是想得到数据库内的东西,比如用户名密码等。(当然mssql数据库还可以借此获得权限)。如果我们不用注入就可以得到整个数据库,不是更好吗?于是暴库成了一个比注入更简单的的入侵手段。有关暴库的方法,高手们常在入侵文章中提高,但多是一笔带过,有些就某一个方法谈的,也多是就方法进行探讨。最近有一篇《再谈%5c暴库的利用》文章,算是对暴库进行了一些总结,因而在网是流传很广。但仍没有谈及原理,而且结论也只是就于经验,似是而非,于是决定来谈谈暴库的原理与规律。一,关于%5c暴库大法:这种方法被认为是暴库绝招,很是流行了一阵(随着知道的人多了,防备也加强了,没以前那么有效了)。这种方法,简单点说就是,打开网页时,把网址址中的/换成%5c,然后提交,就可以暴出数据库的路径。实际上,并不是所有网址都有效,需要asp?id=这样的网页地址(表示有调用数据库的行为),如果你确认这个网页有调用数据库的,后面不是这样的也可以,比如chklogin.asp等也可以。(当然,也还有其它条件,后面再谈。)先举个例子,_blank_blank=3把第二个/换成%5c_blank_blank=3提交后会得到如下结果:MicrosoftJETDatabaseEngine错误'80004005''D:\111\admin\rds_dbd32rfd213fg.mdb'不是一个有效的路径。确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。/yddown/conn.asp,(说明:这是黑防实验室的一个网站,暴库是他们故意开放的,因为它的关口不是注入,而是进入后台后如何获得shell)。现在很多人都知道这个方法了,我就不多举例了。但清楚暴库原理的人估计是不多的。有人成功,有人不成功,《再谈%5c暴库的利用》一文总结说,须变换第二个/为%5c才行。很有实用性,但这个结论只是一种经验,其实并不正确。让我们先看看它的原理%5c暴库法,它不是网页本身的漏洞,而是利用了IIS解码方式中的一个特性,如果IIS安全设置不周全,而网页设计者未考虑IIS错误,就会被人利用。为何要用%5c?它实际上是\的十六进制代码,也就是\的另一种表示法。在电脑中,它们是一个东东。但提交\和%5c却会产生不同的结果,在ie中,我们把下面第一个地址中的/换成\提交:_blank=3_blank=3二者的访问结果是一样的。ie会自动把\转变成/,从而访问到同一地址。但是,当我们把/换成十六进制写法%5c时,ie不会对此进行转换。地址中的%5c被原样提交了。这是抓包结果:GET/yddown%5cview.asp?id=3HTTP/1.1[!--empirenews.page--]当IIS收到后解析时,又会将%5c还原成\。这样,iis中网址的相对路径就变成/yddown\view.asp。这一点很重要。问题正是从这里开始的。在ASP网页中,凡调用数据库时,都会用到一个连接数据库的网页conn.asp,它会创建一个数据库连接对象,定义要调用的数据库路径一个典型的conn.asp如下:大家注意第4句:DBPath=Server.MapPath(admin/rds_dbd32rfd213fg.mdb),Server.MapPath方法的作用是将网站中的相对路径转变成物理上的绝对路径。为何要这样?因为连接数据库时,须指明它的绝对路径。(这里可能有人不明白,什么相对路径、绝对路径?IIS为了不让访问者知道真实的实际路径,并且确保网站不因变换地址而影响使用,它采用了一种相对路径来表示目录与文件之间的关系。也就是网址目录只表示从根目录起的相对位置。比如:上面的网站中,网站:_blank的根目录为:D:\111\雨点下载目录则在根目录(D:\111)内的yddown下,我们网站访问该站时,就是在访问D:\111\yddown\目录,而,它只表明了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会自动把我们地址中的\转为/的原因吧。明白这些,我们再来理解暴库就不难了,当我们提交_blank=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会报错,并给出错误原因:MicrosoftJETDatabaseEngine错误'80004005''D:\111\admin\rds_dbd32rfd213fg.mdb'不是一个有效的路径。确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。/yddown/conn.asp,行12这就是暴库语句的来历。[!--empirenews.page--]《再谈%5c暴库的利用》一文中说,必须是网址中的第二个才可以成功,第一个不行。我们从理论上来分析一下,看到底有无规律:还以上面网址为例,如果将第一个/换成%5c,得到的网站相对路径变成\yddows/admin/rds_dbd32rfd213fg.mdb,解析到\时,认为已到物理目录,不再往前解析。而事实上,它确实也是根目录,所以得到的物理路径为:D:\111\dydow\admin\rds_dbd32rfd213fg.mdb这个路径是正确的,所以不会出错,当然不会暴出数据库路径。第二个个/换成%5c的情况,我们上面已作分析,那是不是真的就第二个可以暴出呢,事实上,它只是因为二级网站较为常见,并不是真理。如果这个下载系统是某一个网站中的三级目录,变第三个也是可以的。有时,变第三个成功的可能性更大。也就是说,最右边第一个成功可能性大。不信?我先举个例子,再说原因:_id=31&log_id=246target=_blank=31&log_id=246这个网址,变第二个/为%5c时,网站打开很慢,但没有出错。当我们把第三个/变成%5c后,提交:_id=31&log_id=246target=_blank=31&log_id=246可以看到,数据库暴出来了!:MicrosoftJETDatabaseEngine错误'80004005''H:\channely\log_mdb\%29dlog_mdb%29.asp'不是一个有效的路径。确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。/channely/blog/conn.asp,为何这样?这是因为网站内用了虚拟目录,也就是说这个网站的子目录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仍是对的,当然不会暴库。[!--empirenews.page--]《再谈%5c暴库的利用》中还说了一种针对只有一级目录的解决方法:其实一级目录我们也同样可以成功的,我们可以通过构造一个多级目录来达到暴库的目的。如下:_blank=1这样大家就会有新的惊喜了,呵呵。真的吗?从理论上分析,这种方法是不会成功的。因为遇到%5c时,不再解析,所以中间构造的目录,不论是真是假,都是不起作用的,被舍弃了,相对路径还是到了根目录,路径不会出错。为了证明,我特意找了一个例子:_Show.asp?ArticleID=481target=_blank=481这个网站我们先用conn.asp方法暴出数据库(后面将讲的),说明服务器和网站设置是可以暴库的。_blank得到如下结果_Show.asp?ArticleID=481target=_blank=481却暴不出库,仍得到正常页面(换成存在的路径结果也一样),但图片无法显示。这是因为相对路径变了,所以无法正确找到图片路径,但绝对路径解析时被%5c舍弃了,没有出错,当然暴不出库。二,conn.asp暴库大法这里,conn.asp只是表示数据库调用文件,因为多数都是这个名字(有些网站改名,我们也视同conn.asp)。其实,这种暴库法是最先出现的,以前很多牛人都对此进行过探讨。只是在%5c暴库大法出现后,倒较少有

1 / 7
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功