190 likes | 387 Views
第 10 章 ASP 程序安全. 本章要点: 常见 ASP 漏洞及处理 ASP 安全配置. 10.1 常见 ASP 漏洞及安全处理. ASP 提供强大功能的背后,还存在一些安全方面的漏洞和不足。本章主要介绍 ASP 常见漏洞以及解决途径和方法。在 Windows 2000 系统的 IIS5.0 版本以及 Windows Server 2003 的 IIS6.0 版本中,有些 ASP 漏洞已经得到了较好的解决。介绍 ASP 中存在的安全隐患在一定程度上有助于提高对安全问题的重视。. 10.1.1 Access 数据库下载漏洞.
E N D
第10章 ASP程序安全 本章要点: • 常见ASP漏洞及处理 • ASP安全配置
10.1 常见ASP漏洞及安全处理 • ASP提供强大功能的背后,还存在一些安全方面的漏洞和不足。本章主要介绍ASP常见漏洞以及解决途径和方法。在Windows 2000系统的IIS5.0版本以及Windows Server 2003的IIS6.0版本中,有些ASP漏洞已经得到了较好的解决。介绍ASP中存在的安全隐患在一定程度上有助于提高对安全问题的重视。
10.1.1Access数据库下载漏洞 • ASP结合后台access数据库开发应用系统在一些中小型网站中得到了广泛采用。这种方式的主要安全隐患是,一旦访问者知道Access数据库的路径和文件名,整个数据库就存在被完全下载的可能。在此,以第8章txl.mdb数据库为例进行解释说明.该access数据库存放在服务器d:\aspcode\8\db目录下,若使用者知道该数据库文件存放路径和文件名,可直接在浏览器的地址栏中输入该路径以及文件名
安全处理 • 显然,造成这种危险的主要原因是由于知道了数据库文件路径和文件名。许多攻击者往往根据站点或系统的主题对数据库文件进行一定的猜测。因此,如果将数据库文件另存于一个不太有实际意义的目录中,或者将数据库文件名取得不太规则可大大提高系统在这方面的安全性。 此外,目前比较流行的做法就是将数据库文件扩展名改为.asp,这样,即便知道该数据库文件,在客户端浏览器中下载时也将出现乱码
10.1.2FileSystemObject组件漏洞 • ASP文件通过FileSystemObject组件实现对文件的操作。这些操作主要包括对文本文件的读写、目录的改名、删除和移动等。在IIS6.0及以前各版本中,这种权限一旦被用户利用,服务器上的文件就面临着一定的危险。
利用修改系统注册表内容的方法 • ⑴ 首先利用开始菜单的运行框中输入:regedit进入注册表; • ⑵ 查找注册表中HKEY_CLASSES_ROOT\Scripting.FileSystemObject的键值,并将其改为HKEY_CLASSES_ROOT\Scripting.FileSystemObjectABC。如此,在ASP中引用该组件时就必须改为: • Set fso= CreateObject ("Scripting.FileSystemObjectABC") • 如此一来,对于一般的攻击者来说,就很难准确知道该服务器中的FileSystemObject组件名,因此也就达到了限制别人使用该组件的目的。
10.1.3 脚本漏洞 • 在一个留言程序的输入框中,如果用户输入的不是普通的文本信息,而是带有HTML标记或VBScript等脚本信息,结果会怎样呢?试看在一个普通留言框中输入如下内容: • <font color=blue size=7>我的留言!</font> • 如果站点的留言板程序没有对HTML或VBScript等脚本采取一定的避免措施,那么,在浏览器输出时,留言信息的内容字体将根据用户的输入而变成绿色,同时字体的大小也会改变。显然,这些输出结果已经随着用户的输入而改变。如果用户在留言框中输入的是一段恶意代码的话,譬如: • <a href="http://123.net" onMouseover="while (1) i=i+1 " >重要提示</a> • 在上述语句中,"起到的是双引号的作用;如果在该语句中直接输入双引号,将得不到需要的结果。 • 显然,留言显示的是一个超级链接,当其他用户看到这个链接并单击鼠标后,将触发onMouseover事件,该事件为死循环,从而导致页面出现异常
10.1.4 密码验证漏洞 • 常用站点在用户管理中都将用户名和密码放在数据库的有关表中,而在登录程序中使用SQL语句来查询是否为合法用户,如代码10-3所示。 • 该代码常常被作为检验系统合法用户的页面,登录页面利用session将用户名和密码传递到该页面,再利用SQL语句在数据库中进行查找是否有该用户并密码,找到的话结束该页面,否则重新转到登录页面。 • 在一些实际的应用系统中,往往将用于判断合法用户的页面包含在其他页面中,若该页面为名为IsAdmin.asp,则只要在其他页面的开始部分加入<!--#include file=”IsAdmin.asp”-->即可。若不是合法用户,则转到登录页面;否则结束该页面,执行本页面的其他内容
安全处理 • 通过修改单引号的使用可以防止该漏洞。 • 解决该漏洞的方法是修改单引号的使用,把SQL语句中可能存在的单引号转换成双单引号连用的形式,这样就避免了因单引号前后匹配造成的攻击者绕过用户名和密码验证的漏洞。主要代码如下: • <% • ...... • username=" ' " & replace(username, " ' "," ' ' ") • sql="select * from user where username="&username • ...... • %>
10.2 ASP安全配置 • ASP系统连接SQL Server数据库 • ASP+SQL Server数据库在一些实际应用系统中被广泛采用,由于SQL Server数据库默认的管理员帐户名 sa,每个使用 SQL 的用户都知道存在 sa 帐户。因此,在SQL Server中需要删除 sa 帐户并创建具有安全可靠密码的其他 SQL 管理帐户。
ASP系统连接Access数据库 • 前面已经介绍过在使用Access作为后台数据库时,存在着整个数据库被下载的威胁。解决的方法是为该数据库和目录取一个比较复杂的非常规名字,并将其放置虚拟目录下的多层目录中。在实际应用中,仍然可以在许多环节进行安全方面的设置。 • 进行Access数据库连接时,比较直接的方法是使用如下代码: • conn.open "driver={Microsoft Access Driver(*.mdb)};dbq=Server.MapPath("padje12.mdb")" • 显然,上述代码的危险在于一旦该源程序被获取,那数据库就一览无余。因此,使用Access数据库时,最好使用本书第8章所介绍的方法,即在ODBC里面设置好数据源,而在以后的连接代码中就可这样写: • conn.open "txl"
在程序中记录访问用户信息 • 记录访问用户信息对网站安全的追踪有非常大的帮助,用户信息中包含了用户使用的浏览器、停留时间以及IP地址。 • 记录IP地址可以查找访问用户的具体地点。当然,如果用户通过代理来访问网站,就只能记录代理服务器的IP地址,而不是真实的访问机器的地址。
使用最新的ASP漏洞扫描器 • 可以扫描IIS漏洞的扫描器有许多,比较有名的有ISS,CIS和GNIT等。一般的扫描器通过扫描服务器端口,产生一个HTML文件,该文件中说明了服务器中的一些信息和漏洞,包括用户名和组的相关信息,开放的服务和Web扫描的漏洞。
10.2.2 服务器安全配置 • 将应用程序主目录置入NTFS格式分区 • NTFS是微软基于Windows NT内核的一种文件系统。相对于传统的FAT和FAT32文件系统,NTFS通过特有的权限控制提供文件和文件夹级的安全访问机制。因此,可以定义一个或一组用户访问文件和目录的不同级别。如一个Web应用程序所有者就需要有查看、更改和删除应用程序的权限;而访问应用程序的用户只应具有“只读”权限,以便将其限制为只能查看而不能更改应用程序。
10.2.2 服务器安全配置 • 及时安装Windows系统最新的补丁 • 所有的软件系统都存有缺陷。为了修复发现的错误和漏洞,微软公司会经常公布软件的最新补丁,用户可以经常进入微软官方网站了解和下载最新的漏洞补丁程序。 • 这里需要强调的是对补丁程序的安装应该做到及时。因为发现错误和漏洞并进行修复往往是在现有系统遭受攻击后发生的。否则,系统就随时有被入侵的可能。
10.2.2 服务器安全配置 • 关闭不需要的服务 • 如果着重考虑安全性,对一个平台的所有抽象层进行浓缩,那么,操作系统、进程和网络端口就是安全配置的重点。操作系统为进程提供了软硬件的接口,而进程可打开到网络的端口。
10.2.2 服务器安全配置 • IIS中的虚拟目录 • IIS是ASP程序的开发和管理平台,因此,它的安全设置十分重要。IIS支持虚拟目录,建立虚拟目录对web站点的安全性是非常重要。首先,虚拟目录隐藏了有关站点目录结构的信息;而当web页面被放置在虚拟目录中时,通过对目录设置不同的属性达到对web页面的管理,如可将静态的HTML页面放置在一个子目录中并将属性设置为“读”,而将ASP页面放在另一个子目录中并将属性设为“执行”。显然,这样进一步提高web站点的安全性。
10.2.2 服务器安全配置 • 设置好系统帐户和安全策略 • Windows NT系统在缺省安装后,自动建立了Administrator和guest帐户,许多攻击者就是通过破解上述帐户的密码进入系统。因此,为安全起见,往往将Administrator系统帐户重命名,并保证一定的密码长度和复杂度。对于guest帐户来说,为提高安全性,往往将其设定为禁用状态。
小结 • 本章针对常见ASP漏洞,介绍了一些安全处理的方法;同时,对IIS安全配置等方面作了一定的阐述。通过对本章内容的学习,使读者对ASP在安全方面的一些不足有所了解,并且,能够在实践的基础上,灵活运用,进一步做好安全防范。