荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: hellsolaris (qq), 信区: Security
标  题: ASP漏洞大全
发信站: 荔园晨风BBS站 (Sun Nov 16 23:27:18 2003)


ASP漏洞大全
Microsoft Active Server Pages(ASP)是服务器端脚本编写环境,使用它可以创建和运
行动态、交互的 Web 服务器应用程序。使用 ASP 可以组合 HTML 页 、脚本命令和 Acti
veX 组件以创建交互的 Web 页和基于 Web 的功能强大的应用程序。
现在很多网站特别是电子商务方面的网站,在前台上大都用ASP来实现。以至于现在ASP在
网站应用上很普遍。
ASP是开发网站应用的快速工具,但是有些网站管理员只看到ASP的快速开发能力,却忽视
了ASP安全问题。ASP从一开始就一直受到众多漏洞,后门的困扰,包括%81的噩梦,密码验
证问题,IIS漏洞等等都一直使ASP网站开发人员心惊胆跳。
本文试图从开放了ASP服务的操作系统漏洞和ASP程序本身漏洞,阐述ASP安全问题,并给出
解决方法或者建议。
ASP工作机理

Active Server Page技术为应用开发商提供了基于脚本的直观、快速、高效的应用开发手
段,极大地提高了开发的效果。在讨论ASP的安全性问题之前,让我们来看看ASP是怎么工
作的。ASP脚本是采用明文(plain text)方式来编写的。

ASP脚本是一系列按特定语法(目前支持vbs cript和js cript两种脚本语言)编写的,与
标准HTML页面混合在一起的脚本所构成的文本格式的文件。当客户端的最终用户用WEB浏览
器通过INTERNET来访问基于ASP脚本的应用时,WEB浏览器将向WEB服务器发出HTTP请求。W
EB服务器分析、判断出该请求是ASP脚本的应用后,自动通过ISAPI接口调用ASP脚本的解释
运行引擎(ASP.DLL)。ASP.DLL将从文件系统或内部缓冲区获取指定的ASP脚本文件,接着
就进行语法分析并解释执行。最终的处理结果将形成HTML格式的内容,通过WEB服务器"原
路"返回给WEB浏览器,由WEB浏览器在客户端形成最终的结果呈现。这样就完成了一次完整
的ASP脚本调用。若干个有机的ASP脚本调用就组成了一个完整的ASP脚本应用。
让我们来看看运行ASP所需的环境:
Microsoft Internet Information Server 3.0/4.0/5.0 on NT Server
Microsoft Internet Information Server 3.0/4.0/5.0 on Win2000
Microsoft Personal Web Server on Windows 95/98
WINDOWS NT Option Pack所带的Microsoft IIS提供了强大的功能,但是IIS在网络安全方
面却是比较危险的。因为很少有人会用Windows 95/98当服务器,因此本文我更多的从NT中
的IIS安全问题来探讨。


微软自称的ASP的安全优点

虽然我们本文的重点是探讨ASP漏洞和后门,但是有必要谈谈ASP在网络安全方面的"优点"
,之所以加个"",是因为有时这些微软宣称的"优点"恰恰是其安全隐犯。微软称ASP在网络
安全方面一大优点就是用户不能看到ASP的源程序,
从ASP的原理上看,ASP在服务端执行并解释成标准的HTML语句,再传送给客户端浏览器。
"屏蔽"源程序能很好的维护ASP开发人员的版权,试想你辛辛苦苦做了一个很优秀的程序,
给人任意COPY,你会怎么想?而且黑客还能分析你的ASP程序,挑出漏洞。更重要的是有些
ASP开发者喜欢把密码,有特权的用户名和路径直接写在程序中,这样别人通过猜密码,猜
路径,很容易找到攻击系统的"入口"。但是目前已经发现了很多能查看ASP源程序的漏洞,
后面我们还要讨论。
IIS支持虚拟目录,通过在"服务器属性"对话框中的"目录"标签可以管理虚拟目录。建立虚
拟目录对于管理WEB站点具有非常重要的意义。虚拟目录隐藏了有关站点目录结构的重要信
息。因为在浏览器中,客户通过选择"查看源代码",很容易就能获取页面的文件路径信息
,如果在WEB页中使用物理路径,将暴露有关站点目录的重要信息,这容易导致系统受到攻
击。其次,只要两台机器具有相同的虚拟目录,你就可以在不对页面代码做任何改动的情
况下,将WEB页面从一台机器上移到另一台机器。还有就是,当你将WEB页面放置于虚拟目
录下后,你可以对目录设置不同的属性,如:Read、Excute、s cript。读访问表示将目录
内容从IIS传递到浏览器。而执行访问则可以使在该目录内执行可执行的文件。当你需要使
用ASP时,就必须将你存放.asp文件的目录设置为"Excute(执行)"。建议大家在设置WEB
站点时,将HTML文件同ASP文件分开放置在不同的目录下,然后将HTML子目录设置为"读",
将ASP子目录设置为"执行",这不仅方便了对WEB的管理,而且最重要的提高了ASP程序的安
全性,防止了程序内容被客户所访问。


ASP漏洞分析和解决方法

有人说一台不和外面联系的电脑是最安全的电脑,一个关闭所有端口,不提供任何服务的
电脑也是最安全的。黑客经常利用我们所开放的端口实施攻击,这些攻击最常见的是DDOS
(拒绝服务攻击).下面我会列出ASP的二十几个漏洞,每个漏洞都会有漏洞描述和解决方
法。

1 在ASP程序后加个特殊符号,能看到ASP源程序

受影响的版本:
win95+pws
IIS3.0
98+pws4 不存在这个漏洞。
IIS4.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和win95+PWS的浏览中就很容易看到somepage.asp的源程序。究竟是什
么原因造成了这种可怕的漏洞呢?究其根源其实是 Windows NT 特有的文件系统在做怪。
有一点常识的人都知道在 NT 提供了一种完全不同于 FAT 的文件系统:NTFS,这种被称之
为新技术文件系统的技术使得 NT 具有了较高的安全机制,但也正是因为它而产生了不少
令人头痛的隐患。大家可能不知道, NTFS 支持包含在一个文件中 的多数据流,而这个包
含了所有内容的主数据流被称之为"DATA",因此使得在浏览器 里直接访问 NTFS 系统的这
个特性而轻易的捕获在文件中的脚本程序成为了可能。然而 直接导致 ::$DATA 的原因是
由于 IIS 在解析文件名的时候出了问题,它没有很好地规范文件名。

解决方法和建议:

如果是Winodws NT用户,安装IIS4.0或者IIS5.0,Windows2000不存在这个问题。如果是w
in95用户,安装WIN98和PWS4.0。

2 ACCESS mdb 数据库有可能被下载的漏洞

问题描述:
在用ACCESS做后台数据库时,如果有人通过各种方法知道或者猜到了服务器的ACCESS数据
库的路径和数据库名称,那么他能够下载这个ACCESS数据库文件,这是非常危险的。比如
:如果你的ACCESS数据库book.mdb放在虚拟目录下的database目录下,那么有人在浏览器
中打入:
http:// someurl/database/book.mdb
如果你的book.mdb数据库没有事先加密的话,那book.mdb中所有重要的数据都掌握在别人
的手中。

解决方法:

(1) 为你的数据库文件名称起个复杂的非常规的名字,并把他放在几目录下。所谓"非常规
",打个比方:比如有个数据库要保存的是有关书籍的信息,可不要把他起个"book.mdb"的
名字,起个怪怪的名称,比如d34ksfslf.mdb,再把他放在如./kdslf/i44/studi/ 的几层
目录下,这样黑客要想通过猜的方式得到你的ACCESS数据库文件就难上加难了。

(2)不要把数据库名写在程序中。有些人喜欢把DSN写在程序中,比如:
DBPath = Server.MapPath("cmddb.mdb")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath
假如万一给人拿到了源程序,你的ACCESS数据库的名字就一览无余。因此建议你在ODBC里
设置数据源,再在程序中这样写:conn.open "shujiyuan"

(3)使用ACCESS来为数据库文件编码及加密。首先在选取"工具->安全->加密/解密数据库,
选取数据库(如:employer.mdb),然后接确定,接着会出现"数据库加密后另存为"的窗
口,存为:employer1.mdb。接着employer.mdb就会被编码,然后存为employer1.mdb..要
注意的是,以上的动作并不是对数据库设置密码,而只是对数据库文件加以编码,目的是
为了防止他人使用别的工具来查看数据库文件的内容。
接下来我们为数据库加密,首先以打开经过编码了的employer1.mdb,在打开时,选择"独
占"方式。然后选取功能表的"工具->安全->设置数据库密码",接着输入密码即可。为emp
loyer1.mdb设置密码之后,接下来如果再使用ACCEES数据库文件时,则ACCESS会先要求输
入密码,验证正确后才能够启动数据库。不过要在ASP程序中的connection对象的open方法
中增加PWD的参数即可,例如:
param="driver={Microsoft Access Driver (*.mdb)};Pwd=yfdsfs"
param=param&";dbq="&server.mappath("employer1.mdb")
conn.open param
这样即使他人得到了employer1.mdb文件,没有密码他是无法看到employer1.mdb的。

3 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.as
p
最大的危害莫过于asa文件可以被上述方式读出;数据库密码以明文形式暴露在黑客眼前;


问题解决或建议:

对于IIS自带的show asp code的asp程序文件,删除该文件或者禁止访问该目录即可

4、filesystemobject 组件篡改下载 fat 分区上的任何文件的漏洞

问题描述:
  IIS3、 IIS4 的 ASP 的文件操作都可以通过 filesystemobject 实现,包括文本文件
的读写目录操作、文件的拷贝改名删除等,但是这个强大的功能也留下了非常危险的 "后
门"。利用 filesystemobjet 可以篡改下载 fat 分区上的任何文件。即使是 ntfs 分区,
如果权限没有设定好的话,同样也能破坏,一不小心你就可能遭受"灭顶之灾 "。遗憾的是
很多 webmaster 只知道让 web 服务器运行起来,很少对 ntfs 进行权限 设置,而 NT 目
录权限的默认设置偏偏安全性又低得可怕。因此,如果你是 Webmaster ,建议你密切关注
服务器的设置,尽量将 web 目录建在 ntfs 分区上,目录不要设定 everyone full cont
rol,即使是是管理员组的成员一般也没什么必要 full control,只要有读取、更改权限
就足够了。 也可以把filesystemobject的组件删除或者改名。

5、输入标准的HTML语句或者javas cript语句会改变输出结果

问题描述:
  在输入框中打入标准的HTML语句会得到什么相的结果呢?
比如一个留言本,我们留言内容中打入:
<font size=10>你好!</font>
  如果你的ASP程序中没有屏蔽html语句,那么就会改变"你好"字体的大小。在留言本中
改变字体大小和贴图有时并不是什么坏事,反而可以使留言本生动。但是如果在输入框中
写个 javas cript 的死循环,比如:<a herf="http://someurl";; onMouseover="while
(1){window.close('/')}">特大新闻</a>
那么其他查看该留言的客人只要移动鼠标到"特大新闻",上就会使用户的浏览器因死循环
而死掉。

解决方法和建议:

编写类似程序时应该做好对此类操作的防范,譬如可以写一段程序判断客户端的输入,并
屏蔽掉所有的 HTML、 Javascrip


--

※ 来源:.荔园晨风BBS站 http://bbs.szu.edu.cn [FROM: 61.144.235.38]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店