当前位置: 首页 > 图文教程 > 网络编程 > ASP > ASP教程:堵住ASP漏洞

ASP
ASP调用ORACLE存储过程并返回结果集
用ASP实现网页BBS
关于Global.asa文件的深入研究与session变量失效提示的具体方法
简易ASP+注册系统
防护手册:如何防止ASP木马在服务器上运行
用Visual Basic实现多画面播放功能之二
如何增强ASP程序性能(1)
如何增强ASP程序性能(2)
如何增强ASP程序性能(3)
ASP备份数据库
二十八条改善 ASP 性能和外观的技巧
在Form域中Post大于100K的数据
如何使用ASP制作模似动态生长的表单?
Microsoft IIS 真的如此「不安全」吗?(1)
Microsoft IIS 真的如此「不安全」吗?(2)
Microsoft IIS 真的如此「不安全」吗?(3)
Microsoft IIS 真的如此「不安全」吗?(4)
Microsoft IIS 真的如此「不安全」吗?(5)
关于页面和代码分离
ServerVariables 对路径的操作

ASP教程:堵住ASP漏洞


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 32 ::
收藏到网摘: n/a

       ASP教程:堵住ASP漏洞
  
  作者:书生
  
  
  
  --------------------------------------------------------------------------------
    无论你相不相信,通过 asp,可能可以很方便地入侵 web server、窃取服务器上的文件、捕获 web 数据库等系统的用户口令,甚至恶意删除服务器上的的文件,直至造成系统损坏,这些都决非耸人听闻,而且都确确实实发生过,本文将向你一一揭示这些 asp 存在的漏洞,并提出一些防范意见。
  
    上一篇中给大家着重谈了“ADO 存取数据库时如何分页显示”的问题,有位朋友来信给我指出我在计算页面总数时忽略了 Recordset 对象的一个重要参数“PageCount”,它能在给 Pagesize 赋值后自动得出页面的总数,而无须用“INT(RS.recordcount/PgSz*-1)*-1”这样繁琐的公式。我要感谢这位朋友热心地给我指出程序中的不足,由于这个程序是我在很久以前写的,因为在分页显示的时候记录的总数不一定能整除页面显示记录的数目,而当时我又不能肯定 PageCount 是否能正确得出页面的数目,所以偷懒写了这个公式:),说实话我到现在还都没试过用 pagecount,有兴趣的朋友千万要试一下哦,可别学我的懒惰呀。
  
    最近我在 chinaasp 的 bbs 上讨论问题时发现很多朋友对于 asp 的一些安全性问题不甚了解,甚至不知道如何解决最常见的 asp::$DATA 显示源代码的问题,因此我觉得非常有必要在这里给广大朋友们重点谈一谈这个问题,在征得 chinaasp 飞鸟的同意下,我将他曾经写过的一点关于 asp 漏洞的介绍加上我自己的一些实践经验拿出来给大家详细分析一下这个对于 webmaster 来说至关重要的 asp 的安全性问题。
  
    当去年 ::$DATA 的漏洞被发现并公布的第二天,我曾经检测了当时国内大部分运用 asp 的站点,其中百分之九十九都存在以上可以看见源代码的问题,当日我甚至在微软的站点上抓下了 search.asp 这个文件的源代码。可能你会觉得看到源代码并没有什么大碍,如果作为 webmaster 的你这么想就大错特错了。譬如,如果 asp 程序员将站点的登陆密码直接写在 asp 里,那么一旦源码被发现,他人就可以很容易的进入本不该被看到的页面,我就曾经利用这个方法免费成为了一个收费网站的成员(大家可别揭发我哦!),而且很多数据库的连接用户名和密码也都是直接写在 asp 里,一旦被发现,如果你的数据库允许远程访问而且没有设防的话就相当危险了。在一些用 asp 开发的 bbs 程序中,往往使用的是 access mdb 库,如果 mdb 库存放的路径被获知,数据库就很有可能被他人下载,加之如果数据库里含有的密码不加密,那就非常危险了,获取密码的人如果有意进行恶意破坏,他只需要以 admin 身份登陆删除所有 bbs 里的帖子,就够你呛的了。下面列出了目前已经发现的一些漏洞,希望大家提高警惕一、经过实验我们发现, win95+pws 上运行 ASP 程序,只须简单地在浏览器地址栏的 asp 文件名后多加一个小数点 ASP 程序就会被下载下来。 IIS3 也存在同样的问题,如果你目前还在使用 IIS3 一定要测试一下。
    二、 iis2、 iis3、 iis4 的一个广为人知的漏洞就是 ::$DATA,通过它使用 ie 的 view source 或 netscape 直接访问该 asp 文件就能轻而易举地看到 asp 代码。 win98+pws4 不存在这个漏洞。
  
    究竟是什么原因造成了这种可怕的漏洞呢?究其根源其实是 Windows NT 特有的文件系统在做怪。有一点常识的人都知道在 NT 提供了一种完全不同于 FAT 的文件系统: NTFS,这种被称之为新技术文件系统的技术使得 NT 具有了较高的安全机制,但也正是因为它而产生了不少令人头痛的隐患。大家可能不知道, NTFS 支持包含在一个文件中的多数据流,而这个包含了所有内容的主数据流被称之为“DATA”,因此使得在浏览器里直接访问 NTFS 系统的这个特性而轻易的捕获在文件中的脚本程序成为了可能。然而直接导致 ::$DATA 的原因是由于 IIS 在解析文件名的时候出了问题,它没有很好地规范文件名。
    我们该如何解决这个问题呢?办法有几种:
  
    a、是将 .asp 文件存放的目录设置为不可读(ASP 仍能执行),这样 html、 css 等文件就不能放在这个目录下,否则它们将不能被浏览。
  
    b、是安装微软提供的补丁程序,下载的地址如下(注意针对不同的系统有不同的补丁):
  
    该补丁是针对 IIS3, Intel 平台
  
    ftp.microsoft.com/bussys/iis/iis-public/fixes/cht/security/iis3-datafix/iis3fixi.exe
  
    该补丁是针对 IIS3, Intel 平台
  
    ftp.microsoft.com/bussys/iis/iis-public/fix