【51CTO.com 专家特稿】在Web技术飞速演变、电子商务蓬勃发展的今天,企业开发的很多新应用程序都 是Web应用程序,而且Web服务也被越来越频繁地用于集成Web应用程序或与其进行交互,这些趋势带来的问题就是:Web应用程序和服务的增长已超越了 程序开发人员所接受的安全培训和安全意识的范围。web应用系统的安全风险达到了前所未有的高度。本文详细剖析了Web应用中的常见漏洞及***方式,全面 分析web应用系统的安全风险。
Web应用系统是由操作系统和web应用程序组成的。许多程序员不知道如何开发安全的应用程序,他们没有经过安全编码的培训。他们的经验也许是开发独立应用程序或企业 Web应用程序,这些应用程序没有考虑到在安全缺陷被利用时可能会出现灾难性后果。
Web应用的大多数安全问题都属于下面三种类型之一 :
◆服务器向公众提供了不应该提供的服务,导致存在安全隐患。
◆服务器把本应私有的数据放到了公开访问的区域,导致敏感信息泄露。
◆服务器信赖了来自不可信赖数据源的数据,导致受到***。
许多web服务器管理员从来没有从另一个角度来看看他们的服务器,没有对服务器的安全风险进行检查,例如使用端口扫描程序进行系统风险分析等。如果 他们曾经这样做了,就不会在自己的系统上运行那么多的服务,而这些服务原本无需在正式提供Web服务的机器上运行,或者这些服务原本无需面向公众开放。另 外他们没有修改对外提供服务的应用程序的banner信息,使***者容易获取到Web服务器对外提供应用程序的相关版本信息,并根据信息找到相对应的*** 方法和***程序。
许多Web应用程序容易受到通过服务器、应用程序和内部已开发的代码进行的***。这些***行动直接绕过了周边防火墙安全措施,因为端口80或 443(SSL,安全套接字协议层)必须开放,以便让应用程序正常运行。Web应用安全存在非法输入、失效的访问控制、失效的账户和线程管理、跨站脚本攻 击、缓冲区溢出、注射***、异常错误处理、不安全的存储、拒绝服务***、不安全的配置管理等问题。Web应用程序***包括对应用程序本身的DoS(拒绝服 务)***、改变网页内容、SQL注入、上传Webshell以及获取对web服务的控制权限等。 
总之,Web应用***之所以与其他***不同,是因为它们很难被发现,而且可能来自任何在线用户,甚至是经过验证的用户。Web应用***能绕过防火墙 和***检测产品的防护,企业用户无法发现存在的web安全问题。当然企业可以购买诚信网安团队的web应用***评估的服务来对web应用安全进行检查。诚 信网安提供专业的web***评估安全服务,全面分析web应用的脆弱点,并提供相应的解决方案。
下面我们介绍一下Web服务器常见的一些安全漏洞:
本文的目的就是向大家介绍Web服务器的常见漏洞,相信看了自己也能试着发现一些Web服务器的漏洞了。不过需要记住的是,不要为了寻找漏洞而寻找漏洞。另外,即使你找到了漏洞,是否能够利用还是另外一回事。
Web服务器存在的主要漏洞包括物理路径泄露,CGI源代码泄露,目录遍历,执行任意命令,缓冲区溢出,拒绝服务,SQL注入,条件竞争和跨站脚本 执行漏洞,和CGI漏洞有些相似的地方,但是更多的地方还是有着本质的不同。不过无论是什么漏洞,都体现着安全是一个整体的真理,考虑Web服务器的安全 性,必须要考虑到与之相配合的操作系统。
◆物理路径泄露
物理路径泄露一般是由于Web服务器处理用户请求出错导致的,如通过提交一个超长的请求,或者是某个精心构造的特殊请求,或是请求一个Web服务器上不存在的文件。这些请求都有一个共同特点,那就是被请求的文件肯定属于CGI脚本,而不是静态HTML页面。
还有一种情况,就是Web服务器的某些显示环境变量的程序错误的输出了Web服务器的物理路径,这应该算是设计上的问题。
◆目录遍历
目录遍历对于Web服务器来说并不多见,通过对任意目录附加“../”,或者是在有特殊意义的目录附加“../”,或者是附加“../”的一些变 形,如“..\”或“..//”甚至其编码,都可能导致目录遍历。前一种情况并不多见,但是后面的几种情况就常见得多,以前非常流行的IIS二次解码漏洞 和Unicode解码漏洞都可以看作是变形后的编码。
◆执行任意命令
执行任意命令即执行任意操作系统命令,主要包括两种情况。一是通过遍历目录,如前面提到的二次解码和UNICODE解码漏洞,来执行系统命令。另外一种就是Web服务器把用户提交的请求作为SSI指令解析,因此导致执行任意命令。
◆缓冲区溢出
缓冲区溢出漏洞想必大家都很熟悉,无非是Web服务器没有对用户提交的超长请求没有进行合适的处理,这种请求可能包括超长URL,超长HTTP Header域,或者是其它超长的数据。这种漏洞可能导致执行任意命令或者是拒绝服务,这一般取决于构造的数据。
◆拒绝服务
拒绝服务产生的原因多种多样,主要包括超长URL,特殊目录,超长HTTP Header域,畸形HTTP Header域或者是DOS设备文件等。由于Web服务器在处理这些特殊请求时不知所措或者是处理方式不当,因此出错终止或挂起。
◆SQL注入
SQL注入的漏洞在编程过程造成的。后台数据库允许动态SQL语句的执行。前台应用程序没有对用户输入的数据或者页面提交的信息(如POST, GET)进行必要的安全检查。数据库自身的特性造成的,与web程序的编程语言的无关。几乎所有的关系数据库系统和相应的SQL语言都面临SQL注入的潜 在威胁 。
◆条件竞争
这里的条件竞争主要针对一些管理服务器而言,这类服务器一般是以System或Root身份运行的。当它们需要使用一些临时文件,而在对这些文件进行写操作之前,却没有对文件的属性进行检查,一般可能导致重要系统文件被重写,甚至获得系统控制权。
◆CGI漏洞
通过CGI脚本存在的安全漏洞,比如暴露敏感信息、缺省提供的某些正常服务未关闭、利用某些服务漏洞执行命令、应用程序存在远程溢出、非通用CGI程序的编程漏洞。
上述文章内容概要地对Web应用系统存在的安全风险进行分析,当然还有更多的其它安全漏洞。叶子提醒基于web应用交易的企业用户,建议寻求专业的安全服务团队或机构对web应用的站点进行风险评估,以减少web应用系统的风险。