斩断伸向网站数据库的“黑手”
2017-03-08
对 于SQL Server、Oracle等中大型的数据库来说,Access数据库具有结构简单易用使用等优点。但是,黑客一旦下载得手,就可以轻易获取包含在其中的网站管理员密码等敏感信息,进而登录到网站管理后台,执行上传木马等操作,导致网站落入黑客之手。看来,只有采取各种安全措施,保护网站数据库安全,才能让黑客无功而返。
构造特殊名称,避免下载数据库
为了防止黑客随意下载Access数据库,最简单的方法就是在数据库名称前面加上“#”的符号。但是,如果黑客将其更改为“%23”(例如“%23test.mdb”),就可以轻松下载该文件。对此,可以取用简单的变换方式加以解决,例如,可以在数据库名称前面添加“#23%”前缀(例 如“#23%test.mdb”)或者“23%23%”前缀(例如“23%23%test.mdb”),这 样,当在下载数据库时,就会显 示“Directoty Listing Denied”的错误提示,导致下载无法进行。
如果将其名称更改为“23%#test.mdb”或者“##test.mdb”,就会出现无法找到该页的提示,这同样会拦截数据库下载操作。之所以出现这样的情况,原因在于当访问“#23%test.mdb”、“##test.mdb”等以“#”开头的文件时,对于IIS、Apachbe等服务器来说,当浏览器向服务器提交数据时会自动忽略“#”符号以及其后的所有内容,因为访问过程就变成了访问目录的行为,所以就会出现目录访问失败的情况。实际上,也可以在直接在数据库名称前加上“%”符号,同样可以起到放下的作用。
当然,为了更好的保护数据库文件,可以在其名称前面添加更多的特殊字符。例如,可将其更改为“##%%23#test#$$%.mdb”等,如此复杂的名称格式就可以让常用的下载工具视其为非法的URL,这样就可以保护数据库文件安全了。当然,这也仅仅是从URL编码的角度看问题,如果攻击者更换一个角度,从URL加密的角度出发,就可以避开上述限制而下载数据库,为此,可以在文件名称中间夹杂空格符号,则可以有效防御这种下载方式。因为HTTP协议对地址进行解析时,会将空格编码为“%”,这直接导致数据库下载链接出错,可以起到一定的防止下载的作用。
利用特殊文件,防止黑客暴库
在Windows中创建文件时,如果我们试图创建一个没有名称仅有后缀的文件时(例如“.txt”),系统就会弹出“必须键入文件名”的提示,禁止创建这样的文件。如果您使用的基于小旋风等小型的ASP服务器的话,可以利用该方法防御数据库下载操作。例如执行“ren#%test.mdb .mdb”命令,就可以将其更改为“.mdb”文件。当在浏览器中输入“http”//xxx.xxx.xxx.xxx/data/.mdb”地址,试图访问该数据库文件时,就会出现404错误。为了让网站可以顺利访问该数据库,需要地“conn.asp”等连接文件进行修改,将原来的数据库名称更改为“.mdb”,就可以解决问题了。
这样,不管是使用浏览器访问,还是使用下载工具,都无法下载该数据库。如果网站数据库文件较多,在同一存储路径下存在多个和Access数据库,为了避免冲突,可以采取变通的方式解决。例如使用“copy shujuku01.mdb 空格 .mdb”, 将“shujuku01.mdb”更名为“ .mbd”,执行“copy shujuku02.mdb 空格空格 .mdb”,将“shujuku01.mdb”更名为“ .mbd”,如此类推,将不同的数据库文件更名为以空格为开头的“.mdb”文件,按照不同的文件来累加空格的数量。之后则在“conn.asp”文件中分别更改对应数据库文件的名称,这样就可以化解上述问题了。
更改名称,防范黑客下载数据库
当然,对于IIS服务器来说,使用上述方法基本无效。在IIS中,可以采用更加简单的更名方式,来防御非法下载操作。例如,将“test.mdb”更名为“test.ini”文件。之后对“conn.asp”等连接文件中的数据库名称做同样的修改,当黑客试图下载这样的文件时,就会出现无法找到该页的提示。因为浏览器和Web服务器都支持MIME,MIME规定了某种文件以及其对应的文件类型和传输及编码方式。
在Internet信息服务管理器中选择本地计算机,在其右键菜单中点击“属性”项,在弹出窗口中点击“MIME类型”按钮,在打开窗口中的IIS之处的文件类型,其中就包括“.mdb”,这就是为什么可以下载数据库文件的原因。对应的,如果浏览器请求了一个服务器并不知道的MIME文件类型。那么浏览器就无法将其传输给客户端,就会返回404的错误信息。因此,将“.mdb”的MIME类型删除,就可以防止数据库被非法下载了。如果您使用的是虚拟空间,就无权更改服务器中的MIME类型的话,可以将数据库更名为任意一个IIS中没有预设的MIME类型,就可以起到防止下载的作用。
变更存储路径隐藏数据库
为了有效的防止黑客暴库,仅仅采用修改数据库名称的方式是远远不够的,必须采取多种方法才可以保护数据库安全。最有效的方法是对默认的数据库名称进行修改,让黑客无法通过网站模版快速定位数据库。因为很多网站采用的都是公开的整站程序,其数据库路径是公开的,如果不修改默认路径的话,攻击者可以毫不费力的下载数据库文件。当数据库路径被黑客发现后,为了避免其下载数据库,可以将数据库文件存放到Web目录之外的地方。例如,可以在网站目录之外建立一个文件夹,假设为“f:data”。
之后将原来的数据库文件移动到该目录中,再将“conn.asp”等连接文件进行修改,其中的数据库路径更改为新的数据库路径,例如“DataSource ="&Server.mappath("../data/db.mdb")"”等。因为数据库文件存在域网站目录之外,攻击者自然无法下载,但该方法对使用虚拟空间的网站用户不适合。为此,可以采取变通的方法来解决,例如原数据库文件为“pctest.mdb”,可以将其更名为“pc%23test.mdb”,之后在“conn.asp”连接文件中修改数据库名称,这样,不管使用IE或者下载工具,都无法下载该数据库。
还可以在数据库目录下创建名为“pc#test.mdb”的虚假数据库文件,并在其中写入警告信息。当攻击者利用诸如“http://xxx.xxx.xxx.xxx/shujuku/pc%23test.mdb”之类的网址试图下载“pc%23test.mdb”文件时,下载的却是“pc#test.mdb”这个虚假的文件,显示的也是该文件中的警告信息。
禁用映射解析,保护数据库安全
为抵御黑客暴库,可以打开IIS服务管理器,在IIS属性中的“主目录”面板中点击“配置”项,在应用程序配置窗口中点击“添加”,在弹出窗口中点击“添加”按钮,在“可执行文件”栏中输入“C:Windowssystem32inetsvrasp.dll”, 在“扩展名”栏中输入“.mdb”,选择“限制为”项,输入“禁止”。点击“确定”保存配置信息。当黑客试图下载数据库时,因为映射解析的作用,服务器会返回禁止访问的提示。此外,还可采用重定向技术保护数据库安全。例如在IIS管理器中打开目标网站,选择其中的数据库文件,在其右键菜单中点击“属性”项,在弹出窗口中选择“重定向到URL”项,在“重定向到”栏中输入当前网站的网址(或任意网址)。这样当别人试图访问该数据库时会自动跳转到重定向的地址中。
让数据库避开恶意搜索
有经验的用户都知道,在搜索引擎中输入“关键字server.mapPath(".mdb")”,其中的“关键字”为搜索的目标,例如“音乐”等。执行了搜索操作后,可以找到大量相关的网页。在对应的说明信息中可以看到和数据库文件相关的路径信息,例 如“dbq="+server.mappath(“../admin/data/news.mdb")”等。这给攻击者带来了很大的便利。只要对网站链接稍加分析,黑客可以几乎毫不费力的得到了对应网站的数据库下载地址。如果数据库中的管理账户密码没有进行复杂加密的话,黑客攻破该网站是很轻松的事情。
黑客之所以可以利用搜索引擎发现网站的数据库文件信息,主要是因为网站开发者安全意识比较淡漠,数据库连接语句直接保存在普通的ASP页面中。按照ASP网页的执行规则,在“<%%>”标记中的内容将作为ASP的代码执行,代码并不显示在网页中,但是这些代码可以通过网页源文件查看到。因此,在开发网站时,需要采取规范的方法,将数据库连接代码写入“conn.asp”之类的连接文件中,然后在需要调用数据的ASP网页顶部添加“< !-- #include file="conn.asp">”语句,就可以调用数据库了。为搜索到更多的数据库,很多攻击者会使用专用的挖掘工具来大面积的搜索目标网站。这其实是利用了搜索引擎的收录技术,来搜索目标网站根目录下是否存在名为“robots.txt”的文件,根据该文件来确定其对网站收录的访问权限范围。
例如,打开某网站根目录下的“robots.txt”文件,可以看到其中包含了关于该网站的敏感路径信息,包括网站后台地址,数据库路径以及一些程序的升级目录等。为了防止网站数据库以及其他敏感信息不被搜索引擎收录,可以为“robots.txt”文件建立安全规则。例如,将“robots.txt”中的原有内容清空,在其中写入“Useragent:*” 和“Allow:/cgibin/*.htm”两行内容,这样就实现了只允许访问“cgibin”目录下的所有“.htm”类型文件的连接以及与其相关的子目录连接,将数据库目录等敏感内容隐藏起来的目的。
修改连接文件,避开黑客袭扰
利用特殊字符,对网站数据库进行探测,是黑客经常使用的招数。例如,在IE设置界面中打开“高级”面板,在其中取消“显示友好的HTTP错误信息”项的选择。之后打开目标网站,假设其地址为“http://www.xxx.net/amaztar/list.asp?id=100”。黑客在提交访问地址时,将链接中第二个“/”进行修改,在浏览器中可以看到服务器返回的错误信息,在其中的“找不到文件”栏中显示了该网站的真实数据库地址。
如果直接访问地址“http://www.xxx.net/amaztar%5cconn.asp”,即采用特殊字符对数据库连接文件进行访问,也可能在返回的错误信息中得到网站数据库的真实地址。当然,上面的分析只是假设的网站,但是可以看出,将访问链接中的特定“/”进行更改,就可以探测到网站的数据库文件地址。这主要和IIS的设置解码存在关联,因为浏览器对相对路径错误的解码,导致出现数据库文件路径泄漏的问题。
为了避免出现上述漏洞,最简单有效的方法对“conn.asp”连接文件进行修改。例如,在其中逐行依次加入“<%”,“Option Explicit”,“Dim” ,“Dim db”,“Dim Connstr”,“Db= "data/数据库实际名称.mdb"”,“ConnStr=”Provider= Microsoft.Jet.OLEDB.4.0;Data Source=”&Server.MapPath(db)”,“On Error Resume Next”,“Set conn = Server.CreateObject(“ADODB.Connection”)”,“conn.open ConnStr”,“If Ree Then”,“err.Clear”,“Ser Conn =Nothing”,“Response.Write= Nothing”,“Response.Write "数据库连接出现异常,请查看提交的数据!"”,“Reponse.End”,“End If”,“%>”等语句。这样,就实现了数据库防暴库功能。当黑客使用上述方法试图探测网站的数据库真实路径时,服务器就会返回“"数据库连接出现异常,请查看提交的数据!”的警告信息。