ASP网络安全手册（三）

---摘自《CPCW》

五 ASP漏洞分析和解决方法

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.asp
最大的危害莫过于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 control，即使是是管理员组的成员一般也没什么必要 full control，只要有读取、更改权限就足够了。 也可以把filesystemobject的组件删除或者改名。
5、输入标准的HTML语句或者javascript语句会改变输出结果
问题描述：
在输入框中打入标准的HTML语句会得到什么相的结果呢？
比如一个留言本，我们留言内容中打入：
<font size=10>你好！</font>
如果你的ASP程序中没有屏蔽html语句，那么就会改变"你好"字体的大小。在留言本中改变字体大小和贴图有时并不是什么坏事，反而可以使留言本生动。但是如果在输入框中写个 javascript 的死循环，比如：<a herf="http://someurl" onMouseover="while(1){window.close('/')}">特大新闻</a>
那么其他查看该留言的客人只要移动鼠标到"特大新闻"，上就会使用户的浏览器因死循环而死掉。
解决方法和建议：
编写类似程序时应该做好对此类操作的防范，譬如可以写一段程序判断客户端的输入，并屏蔽掉所有的 HTML、 Javascript 语句。