堵塞Web漏洞(上)
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程序<
新文章:
- CentOS7下图形配置网络的方法
- CentOS 7如何添加删除用户
- 如何解决centos7双系统后丢失windows启动项
- CentOS单网卡如何批量添加不同IP段
- CentOS下iconv命令的介绍
- Centos7 SSH密钥登陆及密码密钥双重验证详解
- CentOS 7.1添加删除用户的方法
- CentOS查找/扫描局域网打印机IP讲解
- CentOS7使用hostapd实现无AP模式的详解
- su命令不能切换root的解决方法
- 解决VMware下CentOS7网络重启出错
- 解决Centos7双系统后丢失windows启动项
- CentOS下如何避免文件覆盖
- CentOS7和CentOS6系统有什么不同呢
- Centos 6.6默认iptable规则详解