温馨提示
确定要将该版块隐藏吗?你可以在“栏目设置”中将其恢复。
温馨提示
添加关注成功!
你可以去个人中心查看你关注的人与关注你的人
 
温馨提示
确定要移除此人吗?移除后,此人将不在你的列表中显示,也不能接收你的动态。
 
温馨提示
是否要取消关注?
 

请输入登录信息  

博主
访问人数:149863
博客等级:
搜房币:
正文
FSO(FileSystemObject)微软ASP的一个对文件操作的组件>>安全 (2007-12-25 15:10:09) [发送到微博]

前沿:

FSO组件

 FSO介绍
FSO(FileSystemObject)是微软ASP的一个对文件操作的组件,在Windows操作系统中,默认都安装了这个组件,整个服务器上所有的虚拟主机都能使用它。该组件可以处理服务器端的文件、文件夹和驱动器,进行读取、新建、修改、删除目录以及文件的操作。这是ASP编程中非常有用的一个组件。具体功能如下:
1、可检查文件、文件夹是否存在,可建立/删除/移动/ 文件或文件夹。
2、可更改文件、文件夹的名字。
3、通过 TextStream 对象创建和读写文本文件,在简单的数据操作时可代替数据库操作。

虚拟主机客户可以在自己的ASP网页里面直接就对该组件编程,从而查看同一服务器上其他网站的内容,修改、删除服务器上的文件,控制该服务器。即使网站的拥有者没有做这样的事情,有些黑客还利用ASP程序的漏洞,上传含有FSO功能的ASP程序,从而控制整个网站甚至整个服务器。

有些ASP程序利用这个组件可以查看电脑里面的文件,甚至删除修改文件.

潜在问题:

采用IIS的虚拟主机,多个网站共存于一台服务器。服务器为我们提供实用的FSO文件操作组件,同时黑客却可以利用它来非法访问其他网站。

虚拟主机服务器架设在Windows 2000 SERVER的IIS上,且同一个服务器上运行着多个网站,这些虚拟主机都面临着严重的安全威胁:其中任何一个网站的管理者,只要运行一段特殊功能的ASP程序,就能轻易修改同一个服务器上其他网站的文件,甚至服务器上的任何文件(包括Windows系统文件),这种极具危险的ASP程序,经常是通过服务器提供FSO来实现的,网络上随处可得这类程序的源代码。

系统工具:
在IIS里,可以设置每个站点的匿名访问所使用的帐号,默认为IUSR_ HostName,这一方法的原理就是针对每一个共享主机用户分别设置一个Windows帐号,如IUSR_HostName1,IUSR_ HostName 2等,然后将每一个用户限制在各自的Web目录下。

如果是几十个用户分别访问几个目录的话只能手动加了,但是如果是几十个用户访问某一个目录的话你可以将这几十个用户加入你建的某一个组,然后再将组设为允许对这个目录的访问

解决办法:
第一种:禁用FSO组件。用RegSrv32 /u C:\WINNT\SYSTEM32\SCRRUN.DLL来注销该组件。这种做法把FSO功能从服务器提供的功能中暂时删除,作用是全局性的,对于这个服务器中所有的虚拟主机来讲,都再也不能使用FSO功能。对于这种做法,受影响的包括系统管理员本身,管理员可能有些场合下必须用到FSO组件,怎么办?
第二种:修改FSO在注册表中的Progid值。ASP调用组件的方式通常是 Set 对象名=Server.CreateObject("Progid"),FSO的Progid为Scripting.FileSystemObjec。我们可以通过修改注册表中的Progid值从达到禁用该组件的方法。运行REGEDIT命令,调出注册表编辑工具,然后找到HKEY_CLASSES_ROOT\Scripting.FileSystemObject,这时候我们就可以更改该Progid的值了,如把Scripting.FileSystemObjec改成Scripting.NewFSO。对于各个虚拟主机的用于,他们都以为主机提供的FSO应该是使用正常的语法来调用,如:
<%
Set Fso=Server.CreateObject("Scripting.FileSystemObject")
%>
这时候的会发现程序运行错误,报告如下:
服务器对象 错误 ''ASP 0177 : 800401f3''
Server.CreateObject 失败
/test.asp, 行2
无效的类别字符串
这种方法很好地解决了第一种方法带来的矛盾,这时系统的FSO功能并没有被废去,只是换了个名字,使用正确的语句,还是能够使用这个组件的。而对于服务器的系统管理员,他自己当然知道这时候调用FSO应该使用Scripting.NewFSO,语法为:
<%
Set Fso=Server.CreateObject("Scripting.NewFSO")
%>
 
其他参考:
身份验证和授权在分布于各层中许多点分别进行。这些服务主要由 Internet 信息服务 (IIS)、ASP.NET、Enterprise Services 和 SQL Server 提供。同时,安全通信信道在各层上应用,并从客户端浏览器或设备一直延伸到数据库。
IIS身份验证
身份验证就是在用户访问服务器上的任何资源前,要求他们提供一个有效的Windows用户帐号和密码。IIS 提供身份验证机制有:基本身份验证、摘要式身份验证、集成的 Windows 身份验证、证书身份验证和匿名身份验证。其中除了匿名身份验证外,其他的身份认证都必须用户手动提供验证信息或者证书,不适合大部分开放性的网站。如果不需要对客户端进行身份验证(或者您实施自定义的身份验证方案),则可以配置 IIS 进行匿名身份验证。在这种情况下,Web 服务器创建 Windows 访问令牌来表示使用同一个匿名(或 guest)帐户的所有匿名用户。默认匿名帐户是 IUSR_MACHINENAME,其中 MACHINENAME 是在安装时为计算机指定的 NetBIOS 名称,默认情况IUSR_MACHINENAME属于Guests组。
IIS授权
通过身份验证后,在客户端执行服务器上的代码或者访问任何文件时,IIS都扮演着IUSR_MACHINENAME这个帐号。客户端所有的操作都在系统赋予的权限内。一般情况下,文件的访问是通过来NTFS权限来授权的。
服务器的虚拟主机,默认公用同一个匿名帐号帐号IUSR_MACHINENAME,整个服务器所有资源的默认权限都是Everyone“完全控制”(包括IUSR_MACHINENAME),这个正是主机致命的安全漏洞。任何的客户端访问虚拟主机提供的网页服务时,其实也有权限访问该服务器中任何分区的任何文件,很多FSO木马就是利用这个默认权限达到目的的。
 解决方法
安全的解决之道就是为每个Web站点创建不同的匿名访问帐号,并为不同的Web站点的根目录分配不同的访问权限。下面以我馆的清华同方数据库为例子:CNKI站点的根目录在c::\cnki目录中,操作方法如下:
(1)在服务器上打开资源管理器,用鼠标右键点击各个卷的盘符,在弹出菜单中选择“属性”,选择“安全”选项卡,此时就可以看到有哪些帐号可以访问这个分区(卷)及访问权限。默认安装后,出现的是“Everyone”具有完全控制的权限。点“添加”,将“Administrators”、“Backup Operators”等几个组添加进去,并给予“完全控制”或相应的权限,注意,不要给“Guests”组、“IUSR_ MACHINENAME”这几个帐号任何权限,然后将“Everyone”组从列表中删除。这样,就只有授权的组和用户才能访问此硬盘分区了,而 ASP 执行时,是以“IUSR_MACHINENAME”的身份访问硬盘的,这里没给该用户帐号权限,ASP 也就不能读写硬盘上的文件了。
(2)为每个Web站点分配建立一个Windows帐号。本例子中帐号名字可以为IUSR_cnki,并设置密码;
(3)在用户管理器中修改IUSR_cnki,使之仅仅隶属于Guests组;
(4)修改c:\cnki目录的安全属性,删除默认的Everyone完全控制权限,除了“允许将来自父系的可继承权限传播给该对象”外,再增加cnki帐号的完全控制权限;
(5)通过Internet服务管理器,建立cnki虚拟主机,主目录设置到本地路径c:\cnki;
(6)在cnki站点属性窗口中,通过“目录安全性”-“匿名访问和验证控制”,将“匿名访问”的帐号改成IUSR_cnki,输入为IUSR_cnki设置的密码;
(7)如果有多个站点,重复上面的步骤,只要目录和用户名不同就可以。

经过上面的设置,每个Web站点都有自己的匿名用户,能够使用服务器提供的FSO和其他任何组件,匿名用户即便使用了FSO,也只能访问属于它的目录,试图访问其他非授权的目录和文件时,都会出现错误。所以各个Web站点相安无事,很好的解决了安全问题。

原文出处:http://210.34.4.20/society/jqli/society/paper/shh-tsgfw.htm

阅读 (3987) | 评论 (0) | 转载 | 收藏 | 举报/意见
文章评论:
您现在发表的是匿名评论。
发表评论
昵称 (您可以在此修改昵称,不超过20个字符或10个汉字)
内容
评论并转载文章 分享到微博 
搜房用户可以先登录再评论

对不起,您的账号尚未进行真实身份信息注册,评论不能同步到微博!

copyright © SouFun.com Limited, All Rights Reserved. 搜房公司 版权所有