1 前言
随着互联网络的飞速发展,各种各样的大小网站不断地涌现,在这些大小网站中,动态的网站以其实用性、多样性占据了绝对的优势。电子商务、电子政务也很大程度上都依赖网站来运行。在中小型企业中,一般架设企业网站或者电子商务平台都是通过ASP+ACCESS数据库架设在IIS服务器上实现的。由于网站代码编写人员的安全意识不强,管理人员技术薄弱,服务器安全配置不完善等原因,网站容易遭受各种各样的脚本攻击。其中,通过构造特殊URL或者访问特定文件,可以使ACCESS数据库路径泄露,这种攻击方法简称暴库攻击。使得数据库路径泄露的漏洞就简称为数据库路径泄露漏洞,简称暴库漏洞。攻击者利用数据库路径泄露漏洞获取数据库路径后,就可以直接下载数据库,从而获取网站数据信息,造成企业内部信息泄露。并能通过数据信息进一步入侵网站,篡改网站数据或进一步入侵服务器等,从而造成企业的名誉,财产等发生损失。
2 数据库路径泄露漏洞的利用及成因
数据库路径泄露漏洞的利用方式主要有两种,一是通过直接访问数据库连接文件获得数据库文件路径,另外就是通过构造特定的URL获得数据库文件路径。
2.1 直接访问数据库连接文件获得数据库文件路径的方法及成因
2.1.1 直接访问数据库连接文件获得数据库文件路径的方法
一般而言,数据库连接文件地址都有一定的规律可寻,大多都会处于网站的INC目录下,文件名为CONN.ASP。另外,由于许多网站使用的是开源的网站系统,所以其数据库连接文件地址是公开的。而直接访问数据库连接文件暴库的方法通过直接访问数据库连接文件使服务器产生错误,通过服务器返回的错误信息提示暴出数据库地址的。其效果如图1所示。

图1
2.1.2 直接访问数据库连接文件获得数据库文件路径的成因
要清楚为什么会导致数据库路径泄露,首先要理解什么是相对路径和绝对路径。一个网站架设在服务器中,必须在IIS中设定这个网站目录的路径,如d:\wwwroot,这个路径就是网站的绝对路径,假如这个网站目录下还有一个文件夹名为BBS,则d:\wwwroot\bbs就是这个目录的绝对路径,而/bbs就是这个目录的相对路径。
通过直接访问数据库连接文件可以导致数据库路径泄露的根本原因是服务器中的相对路径出错。现在假设数据库连接文件的相对路径为inc/conn.asp。系统的conn.asp是放在根目录下的inc目录运行的,但许多文件都是在根目录下通过语句:调用conn.asp文件运行的。因此,考虑到执行目录的不同,conn.asp中数据库的相对地址是写成“数据库所在目录/数据库名”的,如:db="database/bbs.mdb"当conn.asp被根目录下的其它文件调用时,其连接的是根目录中database目录下的 bbs.mdb文件。而当我们直接访问inc目录下的conn.asp文件时,根据conn.asp中的内容,服务器会去请求连接inc目录下的database目录下的bbs.mdb,相对路径就变成了/inc/database/bbs.mdb 。因为inc目录下没有database目录和bbs.mdb文件,于是服务器就会报错,从而导致了数据库路径的泄露。
2.2通过构造特定的URL获得数据库文件路径的方法及成因
2.2.1通过构造特定的URL获得数据库文件路径的方法
通过构造特定的URL,也可以使得服务器返回错误的信息提示,从而暴出数据库地址。其做法是把型为http://www.xxx.com/bbs/xxx.asp的URL改成http://www.xxx.com/bbs\xxx.asp。效果如图2所示

图2
2.2.2通过构造特定的URL获得数据库文件路径的成因
前面说过,通过直接访问数据库连接文件可以导致数据库路径泄露的根本原因是服务器中的相对路径出错。而通过构造特定的URL暴库的成因则是服务器中的绝对路径出错。在通过构造特定的URL暴库的方法中,我们把URL中最后的一个"\"变成了"\",而代码"\"在URL编码中所代表的是符号"\",只不过如果我们直接在浏览器中提交符号"\"则会自动被浏览器转换为符号"/"。在IIS中,有一个功能叫虚拟目录,而虚拟目录的标志正是符号"\",当IIS遇到我们提交的符号"\"时,便以为遇到了一个虚拟目录,于是就停止了继续向上解析。前面说过,一般数据库连接文件里面是这样写的:db="bbs/data/data.mdb"正常情况下,其数据库绝对路径为D:\wwwroot\bbs\data\data.mdb而遇到符号"\"后就会被解析为D:\wwwroot\data\data.mdb,因为wwwroot下没有data文件夹和data\data.mdb文件,所以IIS就会返回错误信息,这样攻击者就可以得到数据库的路径了。
3.数据库路径泄露漏洞的防范
3.1安装专业的网站防攻击,防篡改软硬件
可以通过安装专业的网站防攻击,防篡改软硬件来保证数据库路径不被泄露,同时还能防止其他针对网站的攻击。但相应的软硬件一般成本较高,适合大型企业、政府机关已经有需要的中小企业使用。
3.2屏蔽IIS错误信息
我们可以通过设置IIS,屏蔽掉IIS错误信息的方法来防范数据库路径泄露漏洞(图3)。这个方法是一个一劳永逸的治本方法。但进行这个操作需要拥有服务器权限,同时也对系统的调试带来了不便。

图3
3.3禁止下载数据库文件
3.3.1利用URLSCAN软件禁止下载数据库
URLSCAN软件是微软推出的免费的IIS安全工具,可以通过黑名单设置禁止访问MDB后缀的文件,从而达到禁止下载数据库文件的目的。但是安装该安全工具需要拥有服务器权限。
3.3.2数据库文件名中带特殊符号防下载
如果数据库文件名中包含符号"#",那么当浏览器解析到符号"#"时就会自动停止解析,从而达到禁止下载数据库文件的目的。但只需要把符号"#"改成它的URL编码"#",或者使用迅雷等下载工具,就可以绕开这一个限制,不推荐使用。
3.3.3更改数据库文件后缀名并加入防下载语句
更改数据库文件后缀名并加入防下载语句的方法是目前比较常见的防范方法。通过把数据库的后缀名改为ASP,并在数据库中建立一个以不规范ASP语句命名的表,如<%nodown%>,从而达到禁止下载数据库文件的目的。但这个做法容易被攻击者利用,通过其他方式往数据库中写入一句话ASP木马,直接把数据库当ASP木马使用,所以这里也不推荐使用。
3.4在数据库连接文件中加入容错语句
一般做法是在数据库连接文件最后加入语句:On Error Resume Next。通过在数据库连接文件中加入容错语句,可以屏蔽因数据库连接文件产生的错误信息。因为无论是通过直接访问数据库连接文件,还是通过构造特殊的URL来实现获得数据库文件路径的目的,都需要通过数据库连接文件来返回错误信息提示。这防范个方法是目前运用得最广泛的方法,且不需要服务器权限,但需要操作人员具备一定的专业知识。
3.5通过空白数据库替换
通过数据库路径泄露漏洞检测后,我们可以在服务器错误信息提示的路径中建立一个同名的文件夹及空白的同名数据库文件,这样服务器就能找到相关文件,从而不会继续报错了。
4.总结
随着网络技术的发展,电子商务、电子政务的普及。网络安全已经成为了急需解决的重大问题。除了数据库路径泄露漏洞攻击外,还有许多针对网站及服务器、网络等的攻击方式。世界上没有绝对安全的网络。养成良好的上网及编程习惯,正确地配置好服务器及网络设备,安装防火墙及杀毒软件并保持更新,注意数据的备份,随时关注最新的安全信息,出现网络安全事故后能快速的应急反应,能帮助我们把损失降到最低。
参考文献
[1] 光芒果. ASP脚本攻防手册 黑客X档案 2006.3
[2] 曾云好. 精通脚本黑客 齐鲁电子音像出版社
[3] 光芒果. 暴库防范新方法 黑客手册 2006.9