堵塞Web漏洞(中)
来源:云南设计港 时间:2007-10-22 13:43:00
●其它错误
此外,还有一些其它难以归类的错误,如“非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、推荐过滤;
7、注意处理好意外情况;
8、实现功能时制定安全合理的策略;
9、培养良好的编程习惯;
10、科学严谨的治学态度,避免“想当然”的错误;
9.3 ASP的安全性
ASP(ActiveServerPage),一个重要的Web技术。它的出现给互联网带来了新的活力,它以一种前所未有的方式处理浏览器与服务器的交互通过内建对象、ADO支持、WSH(可通过它管理NTDOMAIN)几乎可以完成传统应用程序所能完成的一切工作!
ASP是一种类似HTML(HypertextMarkupLanguage超文本标识语言)、Script与CGI(CommonGAtewayInterface通用网关接口)的结合体,但是其运行效率却比CGI更高、程序编制也比HTML更方便且更有灵活性,程序安全及保密性也比Script好。如果您是第一次接触互连网(Internet),那么您可能不很了解上述名词,以下对各种名词加以解释并说明它们之间的区别。
HTML(HypertextMarkupLanguage)是一种超文本标识语言,文件通过这种格式可以在互连网上载送浏览,用户只要使用网页浏览器工具就可以浏览这些文件,目前比较常用的工具包括MicrosoftInternetExplorer,NetscapeCommunicator等,由于HTML文件都是由标签(tag)所组成,因此它比较适合制作静态网页,再者,由于先天上的限制HTML是无法直接存取数据库的,所以存取数据库的工作大多是依靠CGI来处理。ASP不但可以包含HTML标签,也可以直接存取数据库及使用无限扩充的ActiveX控件,因此在程序编制上要比HTML方便而且更富有灵活性。
简单讲,ASP是位于服务器端的脚本运行环境,通过这种环境,用户可以创建和运行动态的交互式Web服务器应用程序,如交互式的 * 页,包括使用HTML表单收集和处理信息,上传与下载等等,就像用户在使用自己的CGI程序一样。但是他比CGI简单。更重要的是,ASP使用的ActiveX技术基于开放设计环境,用户可以自己定义和制作组件加入其中,使自己的 * 页几乎具有无限的扩充能力,这是传统的CGI等程序所远远不及的地方。使用ASP还有个好处,就在于ASP可利用ADO(ActiveDataObject,微软的一种新的数据访问模型,类似于DAO)方便地访问数据库,从而使得开发基于WWW的应用系统成为可能。
9.3.1ASP漏洞分析和解决方法
ASP的漏洞已经算很少的了,想要找到数据库的实际位置也不简单,但这不表明黑客无孔可入,也正是这个观点,一般的程序设计员常常忘记仔细的检查是否有漏洞,所以才有可能导致网站资料被窃取的事件发生。
ASP里面含有一个安全漏洞,就是在/site/eg/source.asp这个随软件一起销售的范例程序,里面的内容有教使用者如何在服务器的这个目录下随意写入档案。解决这个漏洞的方法是建议删除所有软件提供的范例程序。
1、Code.asp文件会泄漏ASP代码
举个很简单的例子,在微软提供的ASP1.0的例程里有一个.asp文件,专门用来查看其它.asp文件的源代码,该文件为ASPSamp/Samples/code.asp。如果有人把这个程序上传到服务器,而服务器端没有任何防范措施的话,他就可以很容易地查看他人的程序。例如:
code.aspsource=/directory/file.asp
不过这是个比较旧的漏洞了,相信现在很少会出现这种漏洞。
下面这命令是比较新的:
http://someurl/iissamples/exair/howitworks/code.asp/lunwen/soushuo.asp=xxx.asp
最大的危害莫过于ASP文件可以被上述方式读出;数据库密码以明文形式暴露在黑客眼前;
问题解决或建议:
对于IIS自带的showASPcode的ASP程序文件,删除该文件或者禁止访问该目录即可。
2、filesystemobject组件篡改下载FAT分区上的任何文件的漏洞
IIS3、IIS4的ASP的文件操作都可以通过Filesystemobject实现,包括文本文件的读写目录操作、文件的拷贝改名删除等,但是这个强大的功能也留下了非常危险的“后门”。利用Filesystemobjet可以篡改下载FAT分区上的任何文件。即使是NTFS分区,如果权限没有设定好的话,同样也能破坏,一不小心你就可能遭受“灭顶之灾”。遗憾的是很多Webmaster只知道让Web服务器运行起来,很少对NTFS进行权限设置,而NT目录权限的默认设置偏偏安全性又低得可怕。因此,如果你是Webmaster,建议你密切关注服务器的设置,尽量将Web目录建在NTFS分区上,目录不要设定EveryoneFullControl,即使是是管理员组的成员一般也没什么必要FullControl,只要有读取、更改权限就足够了。也可以把Filesystemobject的组件删除或者改名。
3、输入标准的HTML语句或者javascript语句会改变输出结果
在输入框中输入标准的HTML语句会得到什么相的结果呢?
比如一个留言本,我们留言内容中输入:
<fontsize=10>你好!</font>
如果你的ASP程序中没有屏蔽HTML语句,那么就会改变“你好”字体的大小。在留言本中改变字体大小和贴图有时并不是什么坏事,反而可以使留言本生动。但是如果在输入框中写个javascript的死循环,比如:<aherf=”http://someurl“onMouseover=”while(1){window.close(’/’)}“>特大新闻</a>
那么其他查看该留言的客人只要移动鼠标到”特大新闻“,上就会使用户的浏览器因死循环而死掉。
解决方法和建议:
编写类似程序时应该做好对此类操作的防范,譬如可以写一段程序判断客户端的输入,并屏蔽掉所有的HTML、JavaScrip。
4、AccessMDB数据库有可能被下载的漏洞
问题描述:
在用Access做后台数据库时,如果有人通过各种方法知道或者猜到了服务器的Access数据库的路径和数据库名称,那么他能够下载这个Access数据库文件,这是非常危险的。比如:如果你Access数据库book.mdb放在虚拟目录下的database目录下,那么有人在浏览器中输入:
http://someurl/database/book.mdb
如果你的book.mdb数据库没有事先加密的话,那book.mdb中所有重要的数据都掌握在别人的手中。