堵塞Web漏洞(上)

2008-02-23 08:21:12来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

Web的大多数安全问题都属于下面三种类型之一:

1、服务器向公众提供了不应该提供的服务。

2、服务器把本应私有的数据放到了公开访问的区域。

3、服务器信赖了来自不可信赖数据源的数据。

显然,许多服务器管理员从来没有从另一个角度来看看他们的服务器,例如使用端口扫描程式。假如他们曾这样做了,就不会在自己的系统上运行那么多的服务,而这些服务原本无需在正式提供Web服务的机器上运行,或这些服务原本无需面向公众开放。

和这种错误经常相伴的是,为了进行维护而运行某些不安全的、可用于窃取信息的协议。例如,有些Web服务器常常为了收集订单而提供POP3服务,或为了上载新的页面内容而提供FTP服务甚至数据库服务。在某些地方这些协议可能提供安全认证(比如APOP)甚至安全传输(比如POP或FTP的SSL版本),但更多的时候,人们使用的是这些协议的非安全版本。有些协议,比如Msql数据库服务,则几乎没有提供任何验证机制。

从公司外面访问自己的网络,完整地检测、模拟攻击自己的网站看看会发生些什么,这对于Web管理者来说是个很好的建议。有些服务在机器安装之后的默认配置中已启动,或由于安装连同初始配置的需要而启动了某些服务,这些服务可能还没有正确地关闭。例如,有些系统提供的Web服务器会在非标准的端口上提供编程示范连同系统手册,他们往往包含错误的程式代码并成为安全隐患所在。正式运行的、可从Internet访问的Web服务器不应该运行这些服务,请务必关闭这些服务。

9.1Web服务器常见漏洞介绍

我们的目的就是向大家介绍Web服务器的常见漏洞,相信看了自己也能试着发现一些Web服务器的漏洞了。但是需要记住的是,不要为了寻找漏洞而寻找漏洞。另外,即使您找到了漏洞,是否能够利用还是另外一回事。

Web服务器存在的主要漏洞包括物理路径泄露,CGI源代码泄露,目录遍历,执行任意命令,缓冲区溢出,拒绝服务,条件竞争和跨站脚本执行漏洞,和CGI漏洞有些相似的地方,但是更多的地方还是有着本质的不同。但是无论是什么漏洞,都体现着安全是个整体的真理,考虑Web服务器的安全性,必须要考虑到和之相配合的操作系统。

9.1.1物理路径泄露

物理路径泄露一般是由于Web服务器处理用户请求出错导致的,如通过提交一个超长的请求,或是某个精心构造的特别请求,亦或是请求一个Web服务器上不存在的文档。这些请求都有一个一起特点,那就是被请求的文档肯定属于CGI脚本,而不是静态HTML页面。

更有一种情况,就是Web服务器的某些显示环境变量的程式错误的输出了Web服务器的物理路径,这应该算是设计上的问题。

9.1.2目录遍历

目录遍历对于Web服务器来说并不多见,通过对任意目录附加“../”,或是在有特别意义的目录附加“../”,或是附加“../”的一些变形,如“..\”或“..//”甚至其编码,都可能导致目录遍历。前一种情况并不多见,但是后面的几种情况就常见得多,去年很流行的IIS二次解码漏洞和Unicode解码漏洞都能够看作是变形后的编码。

9.1.3执行任意命令

执行任意命令即执行任意操作系统命令,主要包括两种情况。一是通过遍历目录,如前面提到的二次解码和UNICODE解码漏洞,来执行系统命令。另外一种就是Web服务器把用户提交的请求作为SSI指令解析,因此导致执行任意命令。

9.1.4缓冲区溢出

缓冲区溢出漏洞想必大家都很熟悉,无非是Web服务器没有对用户提交的超长请求没有进行合适的处理,这种请求可能包括超长URL,超长HTTPHeader域,或是其他超长的数据。这种漏洞可能导致执行任意命令或是拒绝服务,这一般取决于构造的数据。

9.1.5拒绝服务

拒绝服务产生的原因多种多样,主要包括超长URL,特别目录,超长HTTPHeader域,畸形HTTPHeader域或是DOS设备文档等。由于Web服务器在处理这些特别请求时不知所措或是处理方式不当,因此出错终止或挂起。

9.1.6条件竞争

这里的条件竞争主要针对一些管理服务器而言,这类服务器一般是以System或Root身份运行的。当他们需要使用一些临时文档,而在对这些文档进行写操作之前,却没有对文档的属性进行检查,一般可能导致重要系统文档被重写,甚至获得系统控制权。

9.2CGI的安全性

现在我们来谈谈到底什么是CGI(CommonGateIntergace)。在物理上,CGI是一段程式,他运行在Server上,提供同客户段Html页面的接口。这样说大概还不好理解。那么我们看一个实际例子:现在的个人主页上大部分都有一个留言本。留言本的工作是这样的:先由用户在客户段输入一些信息,如名字之类的东西。接着用户按一下“留言”(到现在为止工作都在客户端),浏览器把这些信息传送到服务器的CGI目录下特定的CGI程式中,于是CGI程式在服务器上按照预定的方法进行处理。在本例中就是把用户提交的信息存入指定的文档中。然后CGI程式给客户端发送一个信息,表示请求的任务已结束。此时用户在浏览器里将看到“留言结束”的字样。整个过程结束。

CGI是一种共用网关接口,他能够称之为一种机制.因此您能够使用不同的程式编写适合的CGI程式,这些程式语言包括VisualBasic、Delphi或C/C 等,您将已写好的程式放在Web服务器的电脑上运行,再将其运行结果通过Web服务器传输到客户端的浏览器上。事实上,这样的编制方式比较困难而且效率低下,因为您每一次修改程式都必须重新将CGI程式编译成可执行文档。

9.2.1为什么使用CGI

CGI能够为我们提供许多HTML无法做到的功能,比如:

1、一个记数器

2、顾客信息表格的提交连同统计

3、搜索程式

4、Web数据库

用HTML是没有办法记住客户的任何信息的,就算用户愿意让您知道。用HTML也是无法把信息记录到某一个特定文档里的。要把客户段的信息记录在服务器的硬盘上,就要用到CGI。这是CGI最重要的作用,他补充了HTML的不足。是的,仅仅是补充,不是替代。

9.2.2CGI安全问题

在电脑领域——尤其在Internet上——尽管大部分Web服务器所编的程式都尽可能保护自己的内容不受侵害,但只要CGI脚本中有一点安全面的失误——口令文档、私有数据、连同任何东西,就能使入侵者能访问电脑。遵循一些简单的规则并保持警惕能使自己的CGI脚本免受侵害,从而能够保护自己的权益。这里所说的CGI安全,主要包括两个方面,一是Web服务器的安全,一是CGI语言的安全

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: 系统启动时的软肋Winlogon

下一篇: 堵塞Web漏洞(中)