SP漏洞分析和解决方法(1--4)

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

1 在ASP程序后加个特殊符号,能看到ASP源程序

受影响的版本:

Win95+pws

IIS3.0

98+pws4 不存在这个漏洞。

IIS4.0以上的版本也不存在这个漏洞。

问题描述:

这些特殊符号包括小数点,%81, ::$DATA。比如:

http://someurl/somepage.asp.

http:// ;someurl/somepage.asp%81

http:// ;someurl/somepage.asp::$DATA

http:// ;someurl/somepage.asp %2e

http:// ;someurl/somepage %2e%41sp

http:// ;someurl/somepage%2e%asp

http:// ;someurl/somepage.asp %2e

http://someurl/msadc/samples/selector/showcode.asp?source=/msadc/samples/../../../../../../boot.ini ;(可以看到boot.ini的文件内容)

那么在安装有IIS3.0和win95+PWS的浏览中就很容易看到somepage.asp的源程序。究竟是什么原因造成了这种可怕的漏洞呢?

究其根源其实是 Windows NT 特有的文件系统在做怪。有一点常识的人都知道在 NT 提供了一种完全不同于 FAT 的文件系统:

NTFS,这种被称之为新技术文件系统的技术使得 NT 具有了较高的安全机制,但也正是因为它而产生了不少令人头痛的隐患。大家可能不知道, NTFS 支持包含在一个文件中 的多数据流,而这个包含了所有内容的主数据流被称之为"DATA",因此使得在浏览器里直接访问 NTFS 系统的这个特性而轻易的捕获在文件中的脚本程序成为了可能。然而 直接导致 ::$DATA 的原因是由于 IIS 在解析文件名的时候出了问题,它没有很好地规范文件名。

解决方法和建议:

如果是Winodws NT用户,安装IIS4.0或者IIS5.0,Windows2000不存在这个问题。如果是win95用户,安装WIN98和PWS4.0。

2 ACCESS mdb 数据库有可能被下载的漏洞

问题描述:

在用ACCESS做后台数据库时,如果有人通过各种方法知道或者猜到了服务器的ACCESS数据库的路径和数据库名称,那么他能够下载这个ACCESS数据库文件,这是非常危险的。比如:如果你的ACCESS数据库book.mdb放在虚拟目录下的database目录下,那么有人在浏览器中打入:http:// ;someurl/database/book.mdb

如果你的book.mdb数据库没有事先加密的话,那book.mdb中所有重要的数据都掌握在别人的手中。

解决方法:

(1) 为你的数据库文件名称起个复杂的非常规的名字,并把他放在几目录下。所谓"非常规",打个比方:比如有个数据库要保存的是有关书籍的信息,可不要把他起个"book.mdb"的名字,起个怪怪的名称,比如d34ksfslf.mdb,再把他放在如./kdslf/i44/studi/ 的几层目录下,这样黑客要想通过猜的方式得到你的ACCESS数据库文件就难上加难了。

(2)不要把数据库名写在程序中。有些人喜欢把DSN写在程序中,比如:

DBPath = Server.MapPath("cmddb.mdb")

conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath

假如万一给人拿到了源程序,你的ACCESS数据库的名字就一览无余。因此建议你在ODBC里设置数据源,再在程序中这样写:conn.open "shujiyuan"

(3)使用ACCESS来为数据库文件编码及加密。首先在选取"工具-安全-加密/解密数据库,选取数据库(如:employer.mdb),然后接确定,接着会出现"数据库加密后另存为"的窗口,存为:employer1.mdb。接着employer.mdb就会被编码,然后存为employer1.mdb..

要注意的是,以上的动作并不是对数据库设置密码,而只是对数据库文件加以编码,目的是为了防止他人使用别的工具来查看数据库文件的内容。

接下来我们为数据库加密,首先以打开经过编码了的employer1.mdb,在打开时,选择"独占"方式。然后选取功能表的"工具-安全-设置数据库密码",接着输入密码即可。

为employer1.mdb设置密码之后,接下来如果再使用ACCEES数据库文件时,则ACCESS会先要求输入密码,验证正确后才能够启动数据库。

不过要在ASP程序中的connection对象的open方法中增加PWD的参数即可,例如:

param="driver={Microsoft Access Driver (*.mdb)};Pwd=yfdsfs"

param=param&";dbq="&server.mappath("employer1.mdb")

conn.open param

这样即使他人得到了employer1.mdb文件,没有密码他是无法看到employer1.mdb的.

3 code.asp文件会泄漏ASP代码

问题描述:

举个很简单的例子,在微软提供的 ASP1.0 的例程里有一个 .asp 文件,专门用来查看其它 .asp 文件的源代码,该文件为ASPSamp/Samples/code.asp。如果有人把这个程序上传到服务器,而服务器端没有任何防范措施的话,他就可以很容易地查看他人的程序。例如 :

code.asp?source=/directory/file.asp

不过这是个比较旧的漏洞了,相信现在很少会出现这种漏洞。

下面这命令是比较新的:http://someurl/iissamples/exair/howitworks/code.asp?/lunwen/soushuo.asp=xxx.asp

最大的危害莫过于asa文件可以被上述方式读出;数据库密码以明文形式暴露在黑客眼前;

问题解决或建议:

对于IIS自带的show asp code的asp程序文件,删除该文件或者禁止访问该目录即可

4、filesystemobject 组件篡改下载 fat 分区上的任何文件的漏洞

问题描述:

IIS3、 IIS4 的 ASP 的文件操作都可以通过 filesystemobject 实现,包括文本文件的读写目录操作、文件的拷贝改名删除等,但是这个强大的功能也留下了非常危险的 "后门"。利用 filesystemobjet 可以篡改下载 fat 分区上的任何文件。即使是 ntfs 分区,如果权限没有设定好的话,同样也能破坏,一不小心你就可能遭受"灭顶之灾 "。遗憾的是很多 webmaster 只知道让 web 服务器运行起来,很少对 ntfs 进行权限 设置,而 NT 目录权限的默认设置偏偏安全性又低得可怕。因此,如果你是Webmaster,建议你密切关注服务器的设置,尽量将 web 目录建在 ntfs 分区上,目录不要设定 everyone full control,即使是是管理员组的成员一般也没什么必要 full control,只要有读取、更改权限就足够了。 也可以把filesystemobject的组件删除或者改名。

(未结束)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航