ASP + DATABASE (4)

6.7  IIS服务器安全技术方案

由于ASP的方便易用,越来越多的网站后台程序都使用ASP脚本语言。但是,由于ASP本身存在一些安全漏洞,稍不小心就会给黑客提供可乘之机。事实上,安全不仅是网管的事,程序开发人员也必须在某些安全细节上注意,养成良好的安全习惯,否则会给自己的网站带来巨大的安全隐患。目前,大多数网站上的ASP程序有这样或那样的安全漏洞,但如果编写程序的时候稍加注意,还是可以避免的。在本节中对IIS服务器的漏洞进行详细分析与解决。

6.7.1  实战Unicode漏洞

Unicode是如今最热门的漏洞之一,也是经常被黑客们利用的漏洞之一。如果能知道黑客所采用的入侵手段,就可以进行有效的防御。下面笔者就介绍一下黑客是如何利用该漏洞进行入侵的,通过对该漏洞的分析,来找到防御的方法。

1.方案分析

在Unicode字符解码时,IIS 5.0/6.0存在一个安全漏洞,导致用户可以远程通过IIS执行任意命令。当用户使用IIS打开文件时,如果该文件名包含Unicode字符,系统会对其进行解码。如果用户提供一些特殊的编码,将导致IIS错误地打开或者执行某些Web根目录以外的文件。未经授权的用户可能会利用IUSR_machinename账号的上下文空间访问任何已知的文件。该账号在默认情况下属于Everyone和Users组的成员,因此任何与Web根目录在同一逻辑驱动器上的能被这些用户组访问的文件都可能被删除、修改或者执行。通过此漏洞,用户可查看文件内容、建立文件夹、删除文件、复制文件且改名、显示目标主机当前的环境变量、把某个文件夹内的全部文件一次性复制到另外的文件夹去、把某个文件夹移动到指定的目录和显示某一路径下相同文件类型的文件内容等等。

Unicode漏洞不仅影响中文Windows IIS 6.0+SP6,还影响中文Windows 2000+IIS 5.0、中文Windows 2000+IIS 5.0+SP1。

2.实施过程

如果黑客利用Unicode漏洞进入目标主机,并执行过FTP命令,例如到某个FTP站点下载过文件,就会被记录下来,用户不要认为黑客删除那个文件或给文件改名就可以逃脱入侵的证据。在目标主机的winnt/system32/logfiles/msftpsvc1目录下,可以找到运行FTP的日志,如果黑客执行过FTP命令,在日志文件里可以看到类似下面的记录(其中126.0.0.1为日志中记载的入侵者的IP):

l          11:49:19 126.0.0.1 [2]USER wr 331

l          11:49:19 126.0.0.1 [2]PASS – 230

l          11:49:19 126.0.0.1 [2]sent /aa.txt 226

l          11:49:19 126.0.0.1 [2]QUIT – 226

如果网络内存在Unicode漏洞,可采取以下4种解决方案。

(1)限制网络用户访问和调用CMD命令的权限。

(2)在SCRIPTS、MSADC目录没必要使用的情况下,删除该文件夹或者改名。

(3)安装Windows NT系统时不要使用默认WINNT路径,可以改名为其他文件夹。例如:C:\mywindowsnt。

(4)用户可从如下地址下载Microsoft提供的补丁:

l          IIS 6.0的补丁地址

http://www.microsoft.com/ntserve ... q269862/default.asp。

l          IIS 5.0补丁地址

http://www.microsoft.com/windows ... q269862/default.asp。

3.补充说明

要检测网络中某IP段的Unicode漏洞情况,可使用如Red.exe、SuperScan、RangeScan扫描器、Unicode扫描程序Uni2.pl及流光Fluxay 6.7和SSS等扫描软件来检测。

6.7.2  IIS CGI解译错误漏洞

IIS CG也是经常被黑客们利用的漏洞之一。如果服务器存在这个漏洞不及时修补的话,该漏洞有可能将会被入侵者利用,加大服务器被攻击的指数。

1.方案分析

IIS在加载可执行CGI程序时,会进行两次解码。第一次解码是对CGI文件名进行Http解码,然后判断此文件名是否为可执行文件,如检查后缀名是否为“.exe”或“.com”等。在文件名检查通过之后,IIS会进行第二次解码。正常情况下,应该只对该CGI的参数进行解码,然而,当漏洞被攻击后,IIS会错误地将已经解码的CGI文件名和CGI参数一起进行解码。这样,CGI文件名就被错误地解码两次。通过精心构造CGI文件名,攻击者可以绕过IIS对文件名所做的安全检查。在某些条件下,攻击者可以执行任意系统命令。

2.实施过程

为了避免发生IIS CGI解译错误漏洞和防止此漏洞对系统安全造成不利影响,用户可以安装漏洞补丁。可从如下地址下载Microsoft提供的补丁:

http://www.microsoft.com/Downloads/Release.asp?ReleaseID=29787。

3.补充说明

该漏洞对IIS 6.0/5.0(SP6/SP6a没有安装)远程本地均适用,用户可通过SSS扫描软件进行测试。

6.7.3  .printer缓冲区漏洞

.printer缓冲区漏洞也是经常被黑客们利用的漏洞之一,下面介绍该漏洞的危害以及解决方案。

1.方案分析

此漏洞仅存在于运行IIS 5.0的Windows 2000服务器中。由于IIS 5.0的打印ISAPI(Internet Server Application Programming Interface)扩展接口建立了.printer扩展名到Msw3prt.dll的映射关系(默认情况下该映射也存在),当远程用户提交对.printer的URL请求时,IIS5.0会调用Msw3prt.dll解释该请求,再加上Msw3prt.dll缺乏足够的缓冲区边界检查,远程用户可以提交一个精心构造的针对.printer的URL请求,其“Host:”域包含大约420B的数据,此时在Msw3prt.dll中发生典型的缓冲区溢出,潜在地允许执行任意代码。在溢出发生后,Web服务会停止用户响应,而Windows 2000将接着自动重启它,进而使得系统管理员很难检查到已发生的攻击。

2.实施过程

为了避免发生.printer缓冲区漏洞和防止此漏洞对系统安全造成不利影响,可通过安装Microsoft漏洞补丁程序,下载地址为http://www.microsoft.com/Downloads/...ReleaseID=29321。

3.补充说明

针对.Printer漏洞的检测软件很多,例如easyscan(http://www.netguard.com.cn)、x-scaner(http://www.xfocus.org )和SSS扫描软件等。

6.7.4  IIS服务器的安全配置

ASP站点能够安全稳定的运行,依托高效稳定的ASP文件的编译和执行环境,IIS服务器作为ASP脚本的编译和执行载体,其安全性的好坏,直接关系到整个ASP站点安全。下面将对如何实现IIS服务器的安全配置做具体方案分析和描述。

1.方案分析

对IIS服务器进行安全配置,可以从以下几方面进行方案分析。由于IIS服务器可以执行多种服务器脚本,为了提高站点的安全性,可以对所执行的脚本进行筛选,也就是说筛选器中只保留与ASP脚本有关的项。同时,服务器应该启用身份验证,并且最好不使用IIS服务器中默认的站点目录,而是自已建立新目录。以上只是对IIS服务器进行安全配置的基本方案,在实际应用中还应该做到具体问题具体分析,这样才能有效的保证站点的安全性。

2.实施过程

通过IIS安全配置能够加强IIS站点的安全性,下面以Windows 2003 Server操作系统为例介绍有关IIS安全配置的操作。

(1)选择“管理工具”→“Internet信息服务(IIS)管理器”命令,打开“Internet信息服务(IIS)管理器”窗口。

(2)鼠标右键单击“默认网站”选项,在弹出的快捷菜单中选择“属性”命令,打开“默认网站属性”对话框,如图6.50所示。

图6.50  “默认网站属性”对话框

(3)用户若想记录下浏览者访问网站的记录,以便当网站出现问题时可以通过日志分析出问题,则需要勾选“启用日志记录”复选框,然后在“活动日志格式”下拉列表框中指定日志格式。各种日志的内在差别不是很大,常用的日志格式有Microsoft IIS日志文件格式和W3C扩展日志文件格式。单击“属性”按钮打开日志属性对话框,从中可对日志记录的属性进行详细的设置。如图6.51所示。

图6.51  “日志记录属性”对话框

(4)选中“默认网站属性”对话框中的“主目录”选项卡,从中可以配置主目录和内容权限,如图6.52所示。主目录的分配有3种方式:默认为单选“此计算机上的目录”选项。在“本地路径”文本框中输入或单击“浏览”按钮可以指定本地主目录路径;单选“另一计算机上的共享位置”项可以指定远程主目录,具体形式为:\\服务器\\共享名;单选“重定向到URL”项可以将站点指向到其他域名的目录上,例如将本站站点指向到http://www.mingrisoft/bbs/,并将该站点作为当前Web站点的主目录。在此笔者将主目录的分配方式设置为:“此计算机上的目录”选项,本地路径为:E:\ChatSystem,如图6.52所示。

图6.52  “主目录”选项卡

在“主目录”选项卡中可以对站点文件权限进行设置。如果文件有读取和写入权限,则勾选“读取”和“写入”复选框。如果网站文件中包含有脚本文件则还应勾选“脚本资源访问”复选框。

对于应用程序的执行权限可分为“纯脚本”和“脚本和可执行文件”两种,两者之间的区别在于:可执行程序在服务器端执行,其后缀常为.exe、.dll、.bin和.dat等;而脚本程序是先下载到客户机然后进行解释执行的,脚本程序是采用VBScript、JScript、Pert和PHP等脚本语言编写的。

(5)单击“应用程序设置”区右侧的“配置”按钮对IIS扩展名映射进行设置,如图6.53所示。从中可以删除不必要的应用程序映射,如果用不到其他映射,那么只保留扩展名为.asa和.asp文件即可。

图6.53  “应用程序配置”对话框

(6)选中“默认网站属性”对话框中的“ISAPI筛选器”选项卡,可以管理此站点的“ISAPI筛选器”,如图6.54所示。ISAPI筛选器最常用于与安全性相关的应用程序,例如客户身份验证等。单击“添加”按钮可以添加“ISAPI筛选器”。

图6.54  “ISAPI筛选器”选项卡

“ISAPI筛选器”是一种服务器端应用程序的实现方式,也称为ISAPI应用程序,是指使用ISAPI技术开发的程序。ISAPI类似于早期的CGI技术,能够实现简单的浏览器/服务器(Brower/Server架构)的交互式应用。由于ISAPI占用服务器内存小,能够运行于独立的内存空间,具有很大的灵活性,所以逐渐地成为了CGI的替代技术。

ISAPI应用程序以动态链接库即.dll文件的形式实现,凡是访问网站的用户必须通过该.dll文件处理,从而实现应用程序的运行。因此这种类似过筛子的应用程序的工作方式就被叫做ISAPI筛选器。

(7)选中“默认Web站点属性”对话框中的“目录安全性”选项卡可以定义访问该站点的Windows用户账号,如图6.55所示。

图6.55  “目录安全性”选项卡

单击“身份验证和访问控制”区域中的“编辑”按钮打开访问主目录的“验证方法”对话框,如图6.56所示。

图6.56  “身份验证方法”对话框

匿名访问就是通过系统默认的用户进行访问。如果想指定特定用户访问主目录,则单击“浏览”按钮打开“选择用户”对话框,如图6.57所示。

图6.57  “选择用户”对话框

*   注意:用户账号就是操作系统上的用户。

单击要访问的用户名,单击“确定”按钮确定要选择该用户,然后在返回的“身份验证方法”对话框中的“密码”文本框内输入该用户的密码,并重新输入密码进行确认,如图6.58所示。

图6.58 设置用户密码

*   注意:用户的密码就是建立操作系统时设置的密码。

(8)删除原默认安装的Inetpub目录。在系统盘下(本例以系统盘F盘为例),鼠标右键单击“Inetpub”目录,然后选择“删除”命令,删除原默认安装的Inetpub目录,如图6.59所示。

图6.59  删除Inetpub目录

*   注意:删除原默认安装的Inetpub目录是为了防止黑客猜测到网站主目录而对网站进行破坏。

(9)删除无用的虚拟目录。单击展开“Internet信息服务”对话框中的“默认网站”目录,如图6.60所示。

图6.60  默认网站目录

(10)为了防止黑客利用IIS等的权限和功能进行破坏,应删除以下的虚拟目录:_Vti bin、IIS Samples、Scripts、IIShelp、IIS Admin和MSADC等。鼠标右键单击要删除的目录,然后选择弹出菜单中的“删除”命令即可,如图6.61所示。

图6.61  删除虚拟目录

3.补充说明

要创建一个安全可靠的Web服务器,必须要实现Window和IIS的双重安全,因为IIS的用户同时也是Window的用户,并且IIS目录的权限依赖Windows的NTFS文件系统的权限控制,所以要保护IIS安全就必须确保Window操作系统的安全,通过以下几点来确保Window操作系统的安全:

(1)使用NTFS文件系统,可以方便对文件和目录进行权限管理。

(2)关闭默认共享,首先打开注册表编辑器,然后展开“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters”选项,添加键值AutoShareServer,类型为REG_DWORD,值为0,这样可以彻底关闭“默认共享”。

(3)修改共享权限,建立新的共享权限后可以立即修改Everyone的默认权限,这样就可以让Web服务器的访问者得到一些不必要的访问权限。

(4)可以对系统管理员账号进行更名,避免非法用户攻击。

posted @ 2009-04-01 05:13  jiania  阅读(301)  评论(1)    收藏  举报