暴库总结-摘自《精通脚本黑客》
对于一般的黑客而言,注入不仅仅是为了得到网站后台的密码,更多的时候是为了得到webshell。我来给大家解释一下什么是 webshell。webshell就是一个 asp 或php 木马后门,黑客在入侵了一个网站后,常常在将这些 asp 或php 木马后门文件放置在网站服务器的 web目录中,与正常的网页文件混在一起。然后黑客就可以用 web 的方式,通过 asp 或php 木马后门控制网站服务器,包括上传下载文件、查看数据库、执行任意程序命令等。webshell 最大的优点就是可以穿越防火墙,由于与被控制的服务器或远程主机交换的数据都是通过 80端口传递的,因此不会被拦截。并且使用 webshell 一般不会在系统日志中留下记录,只会在网站的 web 日志中留下一些数据提交记录,没有经验的管理员是很难看出入侵痕迹的。在得到 webshell 通常还会提升权限,最终控制服务器,这些在后面会详细的讲解。
相对于注入漏洞,暴库漏洞就更加的方便了,如果网站采用 ACCESS 数据库,那么暴库之后就可以得到数据库的绝对地址,从而顺利的把数据库下载下来,最后得到管理员的密码,不过一般是经过了 MD5加密的,这在后面会说明,这里大家要明白就是。而如果采用的以脚本语言名为后缀的话,比如 asp、php 等,那么我们就可以直接往里面插入木马,直接得到webshell,非常的方便。 常见的暴库漏洞有 conn.asp 方法和%5c 方法,如果你对上面的方法都没有听过也没有关系,下面我就来详细的讲解这两种方法。
conn.asp暴库法
这个暴库法我们先从 conn.asp 说起,conn.asp 暴库是一个很老的方法了,第一节也提到过。它是通过直接访问数据库连接文件 conn.asp 使服务器产生错误,通过服务器返回的错误信息信息提示从而暴出数据库的绝对地址。其实数据库连接文件不只是只有 conn.asp一个,名字是可以改的,这一点大家不要误会了,这里的 conn.asp 文件是代表数据库连接文件,至于 conn.asp 这个名字并不重要。我们在 Google 里输入“inurl:"conn.asp"”就可以搜索到非常多的存在暴库漏洞的网站,如图 2-64 所示,随便打开一个,就可以看到网站的数据库地址,我们试着下载看看,数据库可以被下载。
可能有些朋友对数据库连接文件还是不太明白,这里我再解释一下。数据库连接文件就是对数据库调用的一个文件,里面包含了被调用数据库的路径及数据库名等等,比如我们调用 MSSQL数据库的时候,那么还会含有 SQL 连接的用户名及密码等内容。另外数据库连接文件的名字并不都是 conn.asp,有的系统可能是别的名称,但大多数都是用 conn.asp,所以我们就把这类漏洞称为 conn.asp暴库,更为准确的应该叫做数据库连接文件暴库漏洞。
为什么直接访问数据库连接文件就能够暴出数据库的地址呢?这是因为数据库连接文件与调用文件的相对路径出错了。相对路径就是相对于我们服务器管理 WEB 的根目录的路径,比如我们的 IIS 的根目录为 D:\wwwroot\,那么在这个目录下会有一个 inc 目录,这个大家可以去装了 IIS 就应该知道。现在我们要访问 inc 这个目录下的文件的时候我们只需要在浏览器中输入 http://127.0.0.1/inc 而不用输入 http://127.0.0.1/wwwroot/inc。这里的 inc 目录就是相对于 wwwroot 为根目录的一级目录,记着是相对于。而 inc 这个目录的绝对路径是 D:\wwwroot\inc,是一个二级目录,记着是绝对。
我们还是举个例子来实际说明吧,假设我们现在的 IIS 上架构了一套动力系统。动力的 conn.asp放在根目录下的 inc 目录下运行。但是我们许多调用 conn.asp 的文件都是放在根目录下运行的,所以,考虑到执行目录的不同,在 conn.asp 文件中数据库的相对地址就写成了“数据库所在目录/数据库名” 。在我们的动力系统中默认的 conn.asp 代码中有一条就是表示数据库的路径。当 conn.asp 被根目录下的其他文件调用时,它连接的是根目录中data 目录下的*.mdb 文件,而当我们直接访问 inc 目录下的 conn.asp 时,根据 conn.asp中的内容, 服务器就会去请求连接inc目录下的data目录那么相对路径就变成了inc/data。但是我们的 inc 目录下并没有 data 这个目录和文件, 所以服务器就会报错
%5c暴库法
下面我们来谈谈%5c 暴库漏洞的利用,有一些网站,我们只需要在该网站的最后一个“/”改成“%5c”就能够暴出它的数据库来。
为什么把“/”改成“%5c”就可以暴库呢?这和编码和 IIS 有很大的关系,下面就来看看他们是什么关系。大家可能还不不太明白%5c是什么东西,其实%5c 就是 16 进制代码中的“\” 。可是我们为什么不直接把最后一个“/”改成“\”呢?这是因为如果我们直接在浏览器中提交“\”的话,浏览器会自动把“\”转换成“/” ,而我们提交“%5c”是不会被浏览器转换的,最后“%5c”给编译表示成了“\” 。可为什么被编译成“\”就会出现暴库呢?
大家还记得前面的 conn.asp 暴库吧,conn.asp 暴库是由于相对路径出错了,IIS 报错信息就暴出了网站的数据库, 而我们的%5c暴库恰恰相反, 是由于绝对路径出错了而引起的暴库。 一般来说,在 conn.asp中都有一句这样的代码: dbpath=server.mappath("数据库地址"), 其中 server.mappath的作用就是把相对路径转换成绝对路径,只有经过它的转换,服务器才能够正确的读写数据。server.mappath 读取的绝对路径的方法是这样的,假设 IIS 的根目录为 D:\wwwroot,在这个目录下还有一个 bbs文件夹,一个 ASP 文章系统就放在这个目录下面,这个系统的数据库路径是database/data.mdb,那么 server.mappath 读取的路径就是为 IIS 根目录+相对路径,即为D:\wwwroot\bbs\database\data.mdb。
大家应该还知道 IIS 还有一个叫虚拟目录的功能,我们还以上面的例子来说明,不过这次我们的 bbs目录不是在 D:\wwwroot 下,而是在 E:\bbs。通过 IIS 虚拟目录的设置,我们仍然可以把 bbs看成是在 wwwroot 下。不过这个时候我们的目录指向的是一个物理路径,IIS 为了解决虚拟目录也能够正常访问的问题,优先查询每一个目录是否指向了一个物理路径,而这种查询就是以“\”为标志的。 接下来就说说%5c 的暴库原理了。当 IIS 遇到了%5c,即当是“\”时,IIS 就以为遇到了一个虚拟目录,便停止向上面的文件夹解析了。比如,网站的数据库是在 D:\wwroot\bbs\database\data.mdb , 而 当 遇 到 “ \ ” 后 就 会 被 解 析 成 D:\wwwroot\database\data.mdb,但是因为 wwwroot 目录下没有 database 文件夹和database\data.mdb 文件,所以 IIS就会报错,那么我们的目的就达到了。
暴库的常见问题和解决方法
在暴库的过程中,我们会遇到很多问题,特别是对于新手来说,下面是我收集到的一些常见问题及解决方法。
(1)、暴库的时候并不显示 XXXX 错误,而是 HTTP500 错误。对于这个非常的好办,是由于没有对 IE 浏览器进行设置而导致的。打开 IE 浏览器,在菜单的“工具”下找到“Internet选项” ,然后找到“高级”处把“显示友好的 HTTP 错误信息”前的“√”去掉,应
用之后就可以下载数据库了。
(2)、暴出的数据库是以 asp 结尾的,如图 2-67 所示,不过下载不了。其实以 asp 结尾的数据库也是可以下载下来的,我们把它的 URL 地址复制到比如讯雷的下载工具上就可以下载了 。不过也有的数据库中专门建立了一个防下载的表,里面写入一条错误的 ASP 代码,一般是<% nodownload %>,这个时候如果在把数据库的后缀改成 asp 就下载不了。
(3)、有的时候暴出的数据库中含有“#”号,也同样下载不了。前面我们说了%5c 其实就是“\”的 16进制的代码,同样的,我们这里也可以用“#”的 16 进制代码%23 代替“#” ,这样数据库就一样可以下载了。
(4)、对于上面的 ASP 数据库,很多时候我们下载下来以后无法打开或者有的时候还需要密码。对于 ASP 数据库,我们只要把它的后缀改成 mdb 就可以了,至于需要密码在第一章介绍ACCESS 数据库的时候大家已经知道 ACCESS 数据库有密码的功能。其实对于 ACCESS
数据库的密码是很容易破解的,在光盘里我已经给大家推荐了一款叫做 Access 密码破解终结的工具,非常的好用。对于 ACCESS 数据库,如果没有安装 office软件,那么可以用辅臣数据库浏览器打开,在光盘中也收录了。
(5)、如果打开数据库后发现密码是 16 位或者 32 位的,那么就说明了这个密码是用了 MD这个加密系统对密码进行加密了,对于 MD5 密码破解还是比较困难的,这里我给大家推荐MD5Crack 这款 MD5 密码破解工具。同时还有一个在线破解 MD5 密码的网站
http://www.xmd5.com,这个网站所有常见的 MD5 密码,是破解 MD5 必备的武器,建议大家还是使用网站来破解。
(6)、数据库是.mdb 但是确下载不了,遇到这个情况可以用讯雷之类的工具下载,如果还不行的话,那可能就是数据库位于服务器的虚拟目录中,对于这种情况是没什么办法的。
(7)、有的时候用%5c 暴库确显示“处理 URL 错误,请与系统管理员联系” 。而用 conn.asp暴库的时候是一片空白。 用 conn.asp暴库的时候一片空白是因为 conn.asp 中加入了容错语句,而显示“处理 URL 错误,请与系统管理员联系”是服务器屏蔽了错误信息的显
示,这个时候暴库就没什么用了。
--摘自《精通脚本黑客》