Web应用十大安全漏洞
开放Web应用程序安全项目通过调查,列出了对Web应用的危害较大的10个安全问题,也是业界集中关注最严重的问题。主要包括:未验证参数、访问控制缺陷、账户及会话管理缺陷、跨网站脚本漏洞、缓冲区溢出、命令注入漏洞、错误处理问题、密码学使用不当、远程管理漏洞、Web服务器及应用服务器配置不当.
未验证参数: Web请求返回的信息没有经过有效性验证就提交给Web应用程序使用。攻击者可以利用返回信息中的缺陷,包括URL、请求字符串、cookie 头部、表单项,隐含参数传递代码攻击运行Web程序的组件。
访问控制缺陷:用户身份认证策略没有被执行,导致非法用户可以操作信息。攻击者可以利用这个漏洞得到其他用户账号、浏览敏感文件、删除更改内容,执行未授权的访问,甚至取得网站管理的权限。
账户及会话管理缺陷:账户和会话标记未被有效保护。攻击者可以得到密码、解密密钥、会话Cookie和其他标记,并突破用户权限限制或利用假身份得到其他用户信任。
跨站脚本漏洞:在远程Web页面的html代码中插入的具有恶意目的的数据,用户认为该页面是可信赖的,但是当浏览器下载该页面时,嵌入其中的脚本将被解释执行。最典型的例子就是论坛处理用户评论的应用程序,这些有跨站脚本漏洞的应用程序会向客户端返回其他用户先前输入的内容,- -些网站的错误处理页面也存在此类问题。浏览器收到了嵌入恶意代码的响应,那么这些恶意代码就可能被执行。
缓冲区溢出: Web应用组件没有正确检验输入数据的有效性,倒使数据溢出,并获得程序的控制权。可能被利用的组件包括CGI,库文件、驱动文件和Web服务器。
命令注入漏洞: Web应用程序在与外部系统或本地操作系统交互时,需要传递参数.如果攻击者在传递的参数中嵌入了恶意代码,外部系统可能会执行那些指令。比如SQL注入攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。
错误处理问题:在正常操作没有被有效处理的情况下,会产生错误提示,如内存不够、系统调用失败、网络超时等。如果攻击者人为构造Web应用不能处理的情况,就可能得到一些反馈信息,就有可能从中得到系统的相关信息。系统如何工作这样重要的信息显示出来,并且暴露了那些出错信息背后的隐含意义。例如,当发出请求包试图判断-一个文件是否在远程主机上存在的时候,如果返回信息为“文件未找到”则为无此文件,而如果返回信息为“访问被拒绝"则为文件存在但无访问权限。
密码学使用不当: Web应用经常会使用密码机制来保护信息存储和传输的安全,比如说开机或文件密码、银行账号、机密文件等。然而这些用于保密用途的程序代码也可能存在一些安全隐患,这可能是由于开发者的原因造成的。
远程管理漏洞:许多Web应用允许管理者通过Web接口来对站点实施远程管理。如果这些管理机制没有得到有效的管理,攻击者就可能通过接口拥有站点的全部权限。
Web服务器及应用服务器配置不当:对Web应用来说,健壮的服务器是至关重要的。服务器的配置都较复杂,比如Apache服务器的配置文件完全是由命令和注释组成,一个命令包括若千个参数。如果配置不当对安全性影响最大。
针对上述10个安全漏洞,在各种攻击时间中占有较大比重的是命令注入攻击/SQL注入攻击和跨站脚本攻击