防范mdb数据库被下载

网络通信

  在互联网技术飞速发展的今天,人们早已不仅仅满足于由HTML构建的简单网页,因此互动的ASP等技术应运而生,而目前使用“IIS+ASP+Access”是中小型Internet网站的首选方案。

  但随之而来的安全问题也日益显著,IIS漏洞层出不穷、ASP代码编写失误等,其中最容易被攻击者利用的莫过于mdb数据库被非法下载了,轻则网站被恶意修改,重则机密资料外泄。

  危险警示

  一般情况下基于ASP构建的网站程序和论坛数据库的扩展名默认为mdb,这是很危险的。只要猜测出了数据库文件的位置,然后在浏览器的地址栏里面输入它的URL就可以轻易地下载该文件。就算我们对数据库加上了密码并且里面管理员的密码也被MD5加密,被下载到本地以后也是很容易被破解。数据库的加密方法仅仅进行了一次异或运算,我们通过很小的程序就可以得到密码。而MD5密码破解工具在网络上也很容易找到。因此只要数据库被下载了,那数据就没有丝毫安全性可言。

  图1就是下载数据库news.mdb后,随意查看到的管理员的用户名和密码信息。可以直接看到“admin”和“好人”的密码分别为“wzp12345”和“fuyewerjl”。如果这样的管理员权限被别人利用,那么这个网站就危险了!一个精心设计的网站就可能就会被修改得面目全非。最恐怖的是这些操作不需要什么攻击知识,仅仅是会点击鼠标和操纵键盘就可以搞定。

  常用的补救方法

  目前常用的数据库文件防止被非法下载的方法有以下几种:

  1.把数据库的名字进行修改,并且放到很深的目录下面。比如把数据库修改为Sj6gf5.mdb并且把它放到很深的目录下面,比如放到/data/me/cn/da/mdb下面,攻击者猜测数据库的位置就很困难。这样做的弊端就是,如果ASP代码文件泄漏,那无论隐藏多深都没有用了。

  2.把数据库的扩展名修改为ASP或者ASA等不影响数据查询的名字。但是有时候修改为ASP或者ASA以后仍然可以被下载……比如我们将它修改为ASP以后,直接在IE的地址栏里输入网络地址,虽然没有提示下载,但是却在浏览器里出现了一大片乱码。这样的情况如果使用Flashget等下载工具,就可以直接把数据库文件下载回来。

  另类防范方法

  在笔者的测试过程中就遇到了ASP和ASA文件也会被下载的问题,可以通过以下的方法解决:

  在给数据库的文件命名的时候,如果数据库文件命名为“#admim.asa”则可以完全避免用IE下载。但是如果破坏者猜测到了数据库的路径等,用Flashget就可以成功地下载回来,然后把下载后的文件改名为“admin.mdb”则网站秘密就将暴露。所以我们要有一种Flashget无法下载的方法。

  因为以前受到unicode漏洞攻击的缘故,网站在处理包含unicode码链接的时候将会不予处理。所以我们可以利用unicode编码(比如可以利用“%3C”代替“<”等)。来达到我们的目的。

  而Flashget在处理包含uncode码链接的时候却“自作聪明”地把unicode编码做了对应的处理,比如自动把“%29”这一段unicode编码形式的字符转化成了“(”,所以你向Flashget提交一个http://127.0.0.1/xweb/data/%29xadminsxx.mdb的下载链接,它却解释成了http://127.0.0.1/xweb/data/(xadminsxx.mdb。看看我们上面网址的地方和下面的重命名的地方是不同的,Flashget把“%29xadminsxx.mdb”解释为了“)xadminxx.mdb”(图2)。

  如果提示下载失败,攻击者肯定要想别的攻击方法。由此我们可以另衍生出一种防范的方法。既然Flashget去找那个名为“xadminxx.mdb”的文件了,我们可以给它准备一个,我们给它作一个仿真的数据库,名为“)xadminxx.mdb”,这样当入侵者想下载文件的时候的确下载了一个数据库回去,他们肯定会偷偷地笑,实际上偷偷笑的是我们。