“开放 Web 应用程序安全项目”(OWASP)通过调查,列出了对 Web 应用的危害较大的安全问题,主要包括:未验证参数,访问控制缺陷,账户及会话管理缺陷,跨站脚本漏洞,缓冲区溢出,命令注入漏洞,错误处理问题,远程管理漏洞,Web 服务器及应用服务器配置不当。
1)未验证参数
Web 请求中包含的信息没有经过有效性验证就提交给 Web应用程序使用,攻击者可以以恶意构造请求中包含某个字段,如URL,请求字符串,Cookie 头部、表单项,隐含参数传递代码攻击运行 Web 程序的组件。
2)访问控制缺陷
用户身份认证策略没有被执行,导致非法用户可以操作信息。攻击者可以利用这类漏洞得到其他用户帐号、浏览敏感文件、删除更改内容、执行未授权访问,甚至取得网站管理员的权限。
3)账户及会话管理缺陷
账户和会话标记未被有效保护,攻击者可以得到口令密码、会话 Cookie 和其他标记,并突破用户权限限制活利用假身份得到其他用户信任。
4)跨站脚本漏洞
在远程 Web 页面的HTML 代码中插入具有恶意目的的代码片段,用户认为该页面是可依赖的,但是当浏览器下载该页面时,嵌入其中的脚本将被解释执行。
5)缓冲区溢出
Web 应用组件没有正确检验输入数据的有效性,导致数据溢出,攻击者可以利用这一点执行一段精心构造的代码,从而获得程序的控制权。可能被利用的组件包括CGI、库文件、驱动文件和 Web 服务器。
6)命令注入漏洞
Web 应用程序在与外部系统或本地操作系统交互时,需要传递参数。如果攻击者在传递参数中嵌入了恶意代码,外部系统可能会执行这些指令。比如SQL注入攻击,就是攻击者将SQL命令插入到 Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。
7)错误处理问题
在正常操作没有被有效处理的情况下,会产生错误提示或内存不足、系统调用失败、网络超时、服务器不可用等。如果攻击者认为构造 Web 应用不能处理的情况,就可能从反馈信息中获得系统的相关信息。例如,当发出请求包试图判断一个文件是否在远程主机上存在的时候,如果返回信息为“文件未找到”,则无此文件,如果返回信息为“访问被拒绝”,则为文件存在但无访问权限。
8)远程管理漏洞
许多 Web 应用允许管理者通过 Web 接口来对站点实施远程管理。如果这些管理机制没有对访问者实施合理的身份认证,攻击者就可能通过接口拥有站点的全部权限。
9) Web 服务器及应用服务器配置不当
对 Web 应用来说,健壮的服务器是至关重要的。服务器的配置比较复杂,比如 Apache 服务器的配置文件完全由命令和注释组成,一个命令包括若干参数。如果配置不当对安全性影响很大。