当前位置:Linux教程 - Php - 堵塞Web漏洞(中)

堵塞Web漏洞(中)

●其它错误
此外,还有一些其它难以归类的错误,如“非1即0”导致绕过认证的问题。

9.2.3  常用的的CGI漏洞检测工具

1.Twwwscan

这个工具速度比较快,而且可以利用参数把windows系统和unix系统分开扫描,不使用图形界面,比较简单些;

2.Cis

是个图形化的小巧扫描工具,主要是针对windows系统设计,对检查出来的CGI问题有比较详细的描述,利于使用、分析和解决漏洞;

3.Voideye

图形界面做的比较花哨,可以检查的CGI问题比较多些,但不太准确。

4.Webscan

检查种类特多,好象有300来条,能提供HTML格式报告,集合了一些跟随攻击方式,这些工具只是检查一下服务器有没有这个链接存在,如果有,就会报出存在漏洞,这当然会有很多误报,工具是死的,人是活的,熟练应用这些辅助工具需要点时间熟悉一下就行了。

9.2.4  如何让你的CGI更安全

了解了CGI的安全问题,我们也该知道怎么加强CGI的安全了吧?下面简单总结一下作为参考:

1.使用最新版本的Web服务器,安装最新的补丁程序,正确配置服务器;

2.按照帮助文件正确安装CGI程序,删除不必要的安装文件和临时文件;

3.使用C编写CGI程序时,使用安全的函数;

4.使用安全有效的验证用户身份的方法;

5.验证用户的来源,防止用户短时间内过多动作;

6.推荐过滤“& ; ` ' \ ” | * ? ~ < > ^ ( ) [ ] { } $ \n \r \t \0 # ../;

7.注意处理好意外情况;

8.实现功能时制定安全合理的策略;

9.培养良好的编程习惯;

10.科学严谨的治学态度,避免“想当然”的错误;

9.3 ASP的安全性

ASP(Active Server Page) ,一个重要的Web技术。它的出现给互联网带来了新的活力,它以一种前所未有的方式处理浏览器与服务器的交互通过内建对象、ADO支持、WSH(可通过它管理NT DOMAIN)几乎可以完成传统应用程序所能完成的一切工作!!

ASP是一种类似HTML(Hypertext Markup Language超文本标识语言)、Script与CGI(Common GAteway Interface 通用网关接口)的结合体,但是其运行效率却比CGI更高、程序编制也比HTML更方便且更有灵活性,程序安全及保密性也比Script好。如果您是第一次接触互连网(Internet),那么您可能不很了解上述名词,以下对各种名词加以解释并说明它们之间的区别。

HTML(Hypertext Markup Language)是一种超文本标识语言,文件通过这种格式可以在互连网上载送浏览,用户只要使用网页浏览器工具就可以浏览这些文件,目前比较常用的工具包括Microsoft Internet Explorer,Netscape Communicator等,由于HTML文件都是由标签(tag)所组成,因此它比较适合制作静态网页,再者,由于先天上的限制HTML是无法直接存取数据库的,所以存取数据库的工作大多是依靠CGI来处理。ASP不但可以包含HTML标签,也可以直接存取数据库及使用无限扩充的ActiveX控件,因此在程序编制上要比HTML方便而且更富有灵活性。

简单讲,ASP是位于服务器端的脚本运行环境,通过这种环境,用户可以创建和运行动态的交互式 Web 服务器应用程序,如交互式的动态网页,包括使用 HTML 表单收集和处理信息,上传与下载等等,就像用户在使用自己的CGI程序一样。但是他比CGI简单。更重要的是,ASP使用的ActiveX技术基于开放设计环境,用户可以自己定义和制作组件加入其中,使自己的动态网页几乎具有无限的扩充能力,这是传统的CGI等程序所远远不及的地方。使用ASP还有个好处,就在于ASP可利用ADO(Active Data Object,微软的一种新的数据访问模型,类似于DAO)方便地访问数据库,从而使得开发基于WWW的应用系统成为可能。

9.3.1  ASP漏洞分析和解决方法

ASP的漏洞已经算很少的了,想要找到数据库的实际位置也不简单,但这不表明黑客无孔可入,也正是这个观点,一般的程序设计员常常忘记仔细的检查是否有漏洞,所以才有可能导致网站资料被窃取的事件发生。

ASP里面含有一个安全漏洞,就是在/site/eg/source.asp这个随软件一起销售的范例程序,里面的内容有教使用者如何在服务器的这个目录下随意写入档案。解决这个漏洞的方法是建议删除所有软件提供的范例程序。

1.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

最大的危害莫过于ASP文件可以被上述方式读出;数据库密码以明文形式暴露在黑客眼前;

问题解决或建议 :

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

2.filesystemobject 组件篡改下载FAT分区上的任何文件的漏洞

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

3.输入标准的HTML语句或者javascript语句会改变输出结果

在输入框中输入标准的HTML语句会得到什么相的结果呢?

比如一个留言本,我们留言内容中输入:

<font size=10>你好!</font>

如果你的ASP程序中没有屏蔽HTML语句,那么就会改变“你好”字体的大小。在留言本中改变字体大小和贴图有时并不是什么坏事,反而可以使留言本生动。但是如果在输入框中写个javascript 的死循环,比如:<a herf=”http://someurl“ onMouseover=”while(1)“>特大新闻</a>

那么其他查看该留言的客人只要移动鼠标到”特大新闻“,上就会使用户的浏览器因死循环而死掉。

解决方法和建议 :

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

4.Access MDB数据库有可能被下载的漏洞

问题描述 :

在用Access做后台数据库时,如果有人通过各种方法知道或者猜到了服务器的Access数据库的路径和数据库名称,那么他能够下载这个Access数据库文件,这是非常危险的。比如:如果你Access数据库book.mdb放在虚拟目录下的database目录下,那么有人在浏览器中输入:

http:// someurl/database/book.mdb

如果你的book.mdb数据库没有事先�