文/图越南临国首相
SQL注入流行很久了,我们找漏洞注入目的无非是想得到数据库内的东西,比如用户名密码等,更进一步的MSSQL数据库还可以借此获得权限。基于Access的基础来说,如果我们不用注入就可以得到整个数据库,不是更好吗?于是暴库成了一个比注入更简单的入侵手段。
有关暴库的方法,高手们常在入侵文章中提到,但多是一笔带过,有些就某一个方法谈的,也多是就方法进行探讨。最近有一篇《再谈%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
提交后会得到如下返回结果:
MicrosoftJETDatabaseEngine错误'80004005'
'D:\111\admin\rds_dbd32rfd213fg.mdb'不是一个有效的路径。确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。
/yddown/conn.asp,行12
这是黑防实验室的一个系统,暴库是小编们故意开放的,因为它的关口不是注入,而是进入后台后如何获得WebShell。可以看到我们直接获取了数据库地址,可以下载了。
现在很多人都知道这个方法了,我就不多举例了。但清楚暴库原理的人估计是不多的,有人成功,有人不成功,《再谈%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=3HTTP/1.1
当IIS收到并做出解析时,又会将%5c还原成“\”。这样,IIS中网址的相对路径就变成/yddown\view.asp,这一点很重要,问题正是从这里开始的。
在ASP网页中,凡调用数据库时,都会用到一个连接数据库的网页Conn.asp,它会创建一个数据库连接对象,定义要调用的数据库路径,一个典型的Conn.asp如下:
<%
dimconn
dimdbpath
setconn=server.createobject(&"adodb.connection&")
DBPath=Server.MapPath(&"admin/rds_dbd32rfd213fg.mdb&")
conn.Open&"driver={MicrosoftAccessDriver(*.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会报错,并给出错误原因:
MicrosoftJETDatabaseEngine错误'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.***/channely/blog/showlog.asp?cat_id=31&log_id=246m.XiaoShuo530.Com
这个网址变第二个“/”为“%5c”时,网站打开很慢,但没有出错。当我们把第三个“/”变成“%5c”后,提交:
http://nice.xmu.edu.***/channely/blog%5cshowlog.asp?cat_id=31&log_id=246
数据库暴出来了:
MicrosoftJETDatabaseEngine错误'80004005'
'H:\channely\log_mdb\%29dlog_mdb%29.asp'不是一个有效的路径。确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。
/channely/blog/conn.asp,行18
为何这样?这是因为网站用了虚拟目录,也就是说这个网站的子目录Channely并 有的人死了,但没有完全死……
无尽的昏迷过后,时宇猛地从床上起身。想要看最新章节内容,请下载爱阅小说app,无广告免费阅读最新章节内容。网站已经不更新最新章节内容,已经爱阅小说APP更新最新章节内容。
他大口的呼吸起新鲜的空气,胸口一颤一颤。
迷茫、不解,各种情绪涌上心头。
这是哪?
随后,时宇下意识观察四周,然后更茫然了。
一个单人宿舍?
就算他成功得到救援,现在也应该在病房才对。
还有自己的身体……怎么会一点伤也没有。
带着疑惑,时宇的视线快速从房间扫过,最终目光停留在了床头的一面镜子上。
镜子照出他现在的模样,大约十七八岁的年龄,外貌很帅。
可问题是,这不是他!下载爱阅小说app,阅读最新章节内容无广告免费
之前的自己,是一位二十多岁气宇不凡的帅气青年,工作有段时间了。
而现在,这相貌怎么看都只是高中生的年纪……
这个变化,让时宇发愣很久。
千万别告诉他,手术很成功……
身体、面貌都变了,这根本不是手术不手术的问题了,而是仙术。
他竟完全变成了另外一个人!
难道……是自己穿越了?
除了床头那摆放位置明显风水不好的镜子,时宇还在旁边发现了三本书。
时宇拿起一看,书名瞬间让他沉默。
《新手饲养员必备育兽手册》
《宠兽产后的护理》
《异种族兽耳娘评鉴指南》
时宇:???
前两本书的名字还算正常,最后一本你是怎么回事?
“咳。”
时宇目光一肃,伸出手来,不过很快手臂一僵。
就在他想翻开第三本书,看看这究竟是个什么东西时,他的大脑猛地一阵刺痛,大量的记忆如潮水般涌现。
冰原市。
宠兽饲养基地。
实习宠兽饲养员。网站即将关闭,下载爱阅app为您提供大神铁血悍馬H8的教你简单的黑客人门技术
御兽师?
章节错误,点此报送(免注册),
报送后维护人员会在两分钟内校正章节内容,请耐心等待