出差回来的这几天工作比较轻松,正好抓这段时间把前两天无聊的时候发现的一个BBSXP的漏洞公布出来,顺便给大家介绍一下查找ASP程序漏洞的方法。看到这里的时候你应该会想到NBSI了吧,没错NBSI的确是一个不错的漏洞检测和利用的工具,但是它只能针对那些有规律可循的简单的漏洞,从软件测试的角度来说使用的是黑盒测试方法。而现在我要告诉大家的是使用白盒测试的方法,从源代码中怎样去查找漏洞(安全系数比较高的BUG)。
在开始之前要先选择一个比较顺手的软件工具,我比较喜欢用的是Micromedia Dreamweaver现在最新的版本是8.0。安装完成之后首先第一步就是要在Dreamweaver中建立一个站点,如图1所示。具体方法不是本文讨论的内容,可以参照网上的很多教程。

图一
然后还要搭建一个测试的环境,使用与Dreamweaver相同的代码文件在本地建一个论坛站点。只需要简简单单地建一两个版面,发表几个帖子就可以了。不要告诉我这些也不知道,那你就要看一看Windows的服务器管理员教程和BBSXP的说明文档了。
下面我要给大家介绍一些相关的理论基础,不要着急,也不要丢我鸡蛋,我只是想让大家摆脱只知其然而不知其所以然的困境而已。好了,现在开始……
由于在ASP中的所有漏洞都是由于没有严格校验从客户端接收的数据而造成的,所谓的数字型、字符型等漏洞只是在SQL查询语句中的使用方法不同而已。而在程序中所有的数据校验和转换的过程都是包含在从数据接收到执行查询语句这个过程之间,因此我们的关注点就要放在获取客户端提交的数据与拼接查询语句之间的数据校验过程之中。
为了简化查找的过程,我们就要从一些关键字入手利用Dreamweaver的搜索功能把可能会存在漏洞的位置查找出来。在ASP中接收客户端数据的方法不外乎使用Request对象,使用方法包括类似于 Request(“ForumID”)、Request.QueryString(“ForumID”)、Request.Form(“ForumID”)、Request.Cookies(“ForumID”)这四种方法。因此只需要搜索Request关键就可以了,搜索结果如图2所示