另类方法实现mdb数据库防下载    

另类方法实现mdb数据库防下载


在因特网技术飞速发展的今天,人们早已不仅仅满足于由html构建的简单的网叶,因此互动的asp等技术应运而生,而目前使用IIS+ASP+Access是中小型Internet网站的首选方案,但随之而来的安全问题也日益显著,iis漏洞层出不穷,asp代码编写失误等其中最容易被攻击者利用的则莫过于mdb数据库被非法下载了,轻则网站被恶意修改,重则机密资料外泻。

  笔者今日参与了朋友网站的建设工作,在对数据库防止下载方面有了一些写的发现,不敢独享,写出来以舐读者。

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

  下面这副图片就是成功下载数据库admin.mdb后,随意查看到的管理员的用户名和密码信息!可以直接看到lovewin2k和冰凌尘埃的密码分别为jiangxueguang和hackerandhacker,下面就可以登陆进入网站管理页面为所欲为了!

  一面就是被恶意修改后的网页!而最恐怖的是这些操作不需要什么黑客知识,仅仅是会点击鼠标和按键盘就可以搞定!下面两副图就是被人恶意修改后的网页截图!

目前常用的数据库文件防止被非法下载得方法莫过于一下几种方法:

  1:把数据库的名字进行修改,并且放到很深得目录下面比如把数据库修改为gj6gf5.mdb并且把他放到很深得目录下面比如/data/me/cn/da/mdb/下面,黑客通过简单得猜测数据库的位置就很难了……。但是如果asp文件泄漏那无论隐藏多深都没有用了。

  2.把数据库的扩展名修改为asp或者asa等不影响数据查询的名字。但是不知道什么原因有时候修改为asp或者asa以后仍然可以被下载……。比如我们将其修改为asp以后,直接在ie的地址栏里输入他的地址,虽然没有提示下载但是却在浏览器里出现了一大片乱码。这样的情况如果使用flashget等下载工具就可以直接被下载回来。

  3.以下摘自网络“
  使用ODBC数据源。在ASP程序设计中,如果有条件,应尽量使用ODBC数据源,不要把数据库名写在程序中,否则,数据库名将随ASP源代码的失密而一同失密,例如:
DBPath = Server.MapPath(“./akkt/kj61/acd/av5/faq9jl.mdb ”)
conn.open “driver={Microsoft Access Driver (*.mdb)};dbq=”& DBPath
可见,即使数据库名字起得再怪异,隐藏的目录再深,ASP源代码失密后,也很容易被下载下来。如果使用ODBC数据源,就不会存在这样的问题了:
  conn.open “ODBC-DSN名” ”
  我测试过程中就遇到了asp和asa文件也会被下载的问题,所以经过研究衍生出了一下的方法……
  如果在给数据库的文件命名的时候。数据库文件命名为#admin.asa则可以完全避免用ie下载,但是如果黑客猜测到了数据库的路径等,用flashget就可以成功的下载回来,然后改名为admin.mdb就ok了……,所以我们要有一种flashget无法下载的方法,但是如何才能让他无法下载呢?
  
  不知道大家是否记得很久以前的UNICODE漏洞?有关漏洞的原理,网上已经有很多文章介绍了,这里不大算详细说,简单的说说unicode编码就可以了。下面是一些unicode编码的对照表:
  
  <等于%3C, >等于%3E, /等于%2F, \等于%5C, =等于%3D, +等于%2B, (等于%28 ,)等于%29, #等于%23, 等于%24, ^等于%5E ,&等于%26, "等于%22 ,|等于%7C, ;等于%3B, ‘等于%27, :等于%3A ,?等于%3F, ,等于%2C, ~等于%7E ,!等于%21
  
这里没有利用unicode漏洞,仅仅利用了unicode漏洞的编码,比如可以利用%3C代替<等等,但是网站在处理包含unicode码的的链接的时候将会不予处理……,大概是因为以前受到unicode漏洞攻击的缘故,都不允许这样的链接请求。
  
而flashge在处理包含uncode码的链接的时候却自作聪明的把unicode编码做了对应的处理,比如自动把“%28”这一段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,当我们点击确定进行下载的时候,他就去寻找一个名为)xadminxx.mdb的文件了……(也就是说flashget被我们给引入了歧途。)他当然找不到。所以提示下载失败了^_^。
  
由此我们可以另衍生出一种防范的方法,既然flashget去找那个名为)xadminxx.mdb的文件了,我们可以给他准备一个呀^_^,我们给他作一个仿真的数据库名为)xadminxx.mdb,这样当入侵者想下载文件的时候的的确确的下载了一个数据库回去,他们肯定会偷偷的笑,实际上偷偷笑的是我们。里面的数据都是假的,如果他下载回去的是新闻数据库,他们没有仔细检查就用在了自己的网站上面^_^里面的假新闻可够他受了……。如果是假的商业机密数据库呢?哈哈!让他们哭去吧

关联文档