黑客攻防技术内幕-入侵者攻击方法(9)
5.5 ASP漏洞攻击
Microsoft Active Server Pages(ASP)是服务器端脚本编写环境,使用它可以创建和运行动态、交互的Web服务器应用程序。使用ASP可以组合HTML页 、脚本命令和 ActiveX 组件以创建交互的Web页和基于Web的功能强大的应用程序。
现在很多网站特别是电子商务方面的网站,在服务器上大都用ASP来实现。以至于现ASP在网站应用上很普遍。ASP是开发网站应用的快速工具,但是有些网站管理员只看到ASP的快速开发能力,却忽视了ASP安全问题。ASP从一开始就一直受到众多漏洞,后门程序的困扰,包括查看ASP源程序密码验证问题,IIS漏洞等等都一直使ASP网站开发人员心惊肉跳。
接下来将介绍几个常见的ASP漏洞,并给出解决方法和建议。
1. 在ASP程序后加个特殊符号,能看到ASP源程序
受影响的版本:IIS3.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的浏览中就很容易看到somepage.asp的源程序。究竟是什么原因造成了这种可怕的漏洞呢?究其根源其实是 Windows NT 特有的文件系统在做怪。有一点常识的人都知道在Windows NT提供了一种完全不同于 FAT 的文件系统:NTFS,这种被称之为新技术文件系统的技术使得Windows NT具有了较高的安全机制,但也正是因为它而产生了不少令人头痛的隐患。大家可能不知道, NTFS 支持包含在一个文件中的多数据流,而这个包含了所有内容的主数据流被称之为DATA。因此使得在浏览器里直接访问 NTFS 系统的这个特性而轻易地捕获在文件中的脚本程序成为了可能。然而直接导致向服务器提交::$DATA暴露ASP源程序的原因是由于 IIS 在解析文件名的时候出了问题,它没有很好地规范文件名。
● 解决方法
如果是Winodws NT用户,可以安装IIS4.0或者IIS5.0(Windows2000不存在这个问题)。如果是Winows 95用户,安装Windows 98和PWS4.0。
2. 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程序文件,删除该文件或者禁止访问该目录即可。
3. IIS4或者IIS5中安装有Index Server服务会暴露ASP源程序
● 问题描述
在运行IIS4或者IIS5的Index Server时输入特殊的字符格式可以看到ASP源程序或者其他页面的程序。甚至服务器添加了最新关于查看ASP源代码的补丁程序程序的系统,或者没有.htw文件的系统,一样存在该问题。被入侵者获得asp程序,甚至global.asa文件的源代码,无疑对系统是一个非常重大的安全隐患。往往这些代码中包含了用户密码和ID,以及数据库的源路径和名称等。这对于入侵者收集系统信息,进行下一步的入侵都是非常重要的。
通过构建下面的特殊程序可以参看该程序源代码:
http://202.116.26.38/null.htw?CiWebHitsFile=/default.asp&CiRestriction=none&CiHiliteType=Full
这样只是返回一些html格式的文件代码,但是当添加%20到CiWebHitsFile的参数后面,如下:
http://someurl/null.htw?CiWebHitsFile=/default.asp%20&CiRestriction=none&CiHiliteType=Full
这将获得该程序的源代码。
注意:
/default.asp是Web的默认首页。如某站点的http:///welcome/welcome.asp。
那么对应就是:
http://someurl/null.htw?CiWebHitsFile=/welcome/welcome.asp%20&CiRestriction=none&CiHiliteType=Full
null.htw文件并非真正的系统映射文件,只是一个储存在系统内存中的虚拟文件。哪怕已经从系统中删除了所有的真实的.htw文件,但是由于对null.htw文件的请求默认是由webhits.dll来处理,所以IIS仍然受到该漏洞的威胁。
● 解决方法
如果该Webhits提供的功能是系统必须的,请下载相应的补丁程序程序。如果没必要,请用IIS的MMC管理工具简单移除.htw的映象文件。
补丁程序程序如下:
Index Server 2.0:
Intel:
http://www.microsoft.com/downloads/release.asp?ReleaseID=17727
Alpha:
http://www.microsoft.com/downloads/release.asp?ReleaseID=17728
Indexing Services for Windows 2000:
Intel:
http://www.microsoft.com/downloads/release.asp?ReleaseID=17726
4. NT iss4.0_AuthChangeUrl? 漏洞
● 问题描述
在NT iis4.0,当输入如下命令时:
http://someurl/_AuthChangeUrl?<font%20size=7%20color=red>你好
这时就会看到<font size=7 color=red>被解释成功,并出现了红色的放大的“你好”字。
如果再向服务器提交以下的命令:
http://someurl/_AuthChangeUrl?<img%20src=http://edu.chinaz.com/Get/Security/Basic/file:///c:/ffhh.jpg>
上面的命令将显示C:根目录下的ffhh.jpg图片,前提是ffhh.jpg存在。
http://someurl/_AuthChangeUrl?<a%20href=file:///c:/install.exe>
上面的命令将下载C:根目录下的install.exe文件。
按照这种方法还能打开对方服务器上一个已经知道的文本文件。
5. 绕过验证直接进入ASP页面
● 问题描述
如果用户知道了一个ASP页面的路径和文件名,而这个文件又是要经过验证才能进去的,所以用户直接输入这个ASP页面的文件名就有可能通过绕过验证。比如:在一些网站上进行这样的测试:首先关闭所有的浏览器窗口,然后输入:
http://someurl/system_search.asp?page=1
就样就可以看到只有系统员才能看到的页面。当然有些人为了防止这种情况也会在system_search.asp的开头加个判断,比如:判断session(“system_name”),如果不为空时就能进入,这样上面的URL请求就不能直接进入管理员页面了。但是这种方法也有一个漏洞,如果攻击者先用一个合法的账号,或者在本机上生成一个session,如session(“system_name”)=“admi”,那因为session(“system_name”)不为空,这样也能绕过密码直接进入管理员页面。
● 解决方法
在需要验证的ASP页面开头处进行相应的处理。比如:在验证页面上可跟踪上一个页面的文件名,只有从上一页面转进来的会话才能读取这个页面。