安全基础知识 细说暴库的原理与方法(3)
为何这样?
这是因为网站内用了虚拟目录,也就是说这个网站的子目录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仍是对的,当然不会暴库。
《再谈%5c暴库的利用》中还说了一种针对只有一级目录的解决方法:
"其实一级目录我们也同样可以成功的,我们可以通过构造一个多级目录来达到暴库的目的。
如下:
http://www.target.com/noexists/..%5clist.asp?id=1
这样大家就会有新的惊喜了,呵呵。"
真的吗?从理论上分析,这种方法是不会成功的。因为遇到"%5c"时,不再解析,所以中间构造的目录,不论是真是假,都是不起作用的,被舍弃了,相对路径还是到了根目录,路径不会出错。
这个网站我们先用conn.asp方法暴出数据库(后面将讲的),说明服务器和网站设置是可以暴库的。
得到如下结果
http://www.om88.com/abc/..%5cArticle_Show.asp?ArticleID=481
却暴不出库,仍得到正常页面(换成存在的路径结果也一样),但图片无法显示。这是因为相对路径变了,所以无法正确找到图片路径,但绝对路径解析时被"%5c"舍弃了,没有出错,当然暴不出库。
二,conn.asp暴库大法
这里,conn.asp只是表示数据库调用文件,因为多数都是这个名字(有些网站改名,我们也视同conn.asp)。其实,这种暴库法是最先出现的,以前很多牛人都对此进行过探讨。只是在"%5c"暴库大法出现后,倒较少有人提及。其实个人认为,"%5c"暴大法随着服务器设置安全性的加强,用武之地会越来越少。而conn.asp暴库大法发挥的余地更大,可以人为构造,臭要饭的当年著名的动网大挪移实现暴库,其实也属于此类。
上面http://www.om88.com/
一例中,用"%5c"暴不出数据库路径,因为没有二级目录,但用第二种却可以暴出。它是动力系统的。
我们再来看另外一个ASP系统一个盗帅的例子:_blank>http://www.51see.org/
提交
http://www.51see.org/db/user.asp
得到如下结果
"Microsoft JET Database Engine 错误 ’80004005’
’d:\Hosting\wwwroot\uilady_com\htdocs\db\db\downloadwoaini12345.asp’不是一个有效的路径。 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。
/db/user.asp,行6 "