0WEB安全性测试注解2015110WEB安全性测试注解.....................................................................................................................01.WEB安全漏洞.............................................................................................................................12.常见的10种安全漏洞(OWASPTOP10)...............................................................................12.1注入....................................................................................................................................12.2失效的身份认证和会话管理............................................................................................22.3跨站脚本(XSS)............................................................................................................42.4直接引用不安全的对象....................................................................................................52.5安全配置错误....................................................................................................................62.6敏感信息泄漏....................................................................................................................72.7缺少功能级访问控制........................................................................................................82.8跨站请求伪造(CSRF)..................................................................................................92.9使用含有已知漏洞的组件..............................................................................................112.10未验证的重定向和转发................................................................................................113.Top10风险因素总结.................................................................................................................134.如何进行验证测试....................................................................................................................134.1代码审查..........................................................................................................................134.2安全测试..........................................................................................................................1311.WEB安全漏洞通常是指由于WEB程序本身体系结构、设计方法、开发编码的缺陷而造成的安全漏洞.2.常见的10种安全漏洞(OWASPTOP10)OWASP(开放Web应用安全项目组-OpenWebApplicationSecurityProject)每隔数年会更新10个最关键的Web应用安全问题清单,即OWASPTOP10。2.1注入2.1.1描述注入攻击漏洞往往是应用程序缺少对输入进行安全性检查所引起的。攻击者把一些包含攻击代码当做命令或者查询语句发送给解释器,这些恶意数据可以欺骗解释器,从而执行计划外的命令或者未授权访问数据。注入漏洞通常能在SQL查询、LDAP查询、OS命令、程序参数等中出现22.1.2危害注入能导致数据丢失或数据破坏、缺乏可审计性或是拒绝服务。注入漏洞有时甚至能导致完全接管主机。2.1.3案例2.1.4解决方法使用安全的API,避免使用解释器对输入的特殊字符进行Escape转义处理使用白名单来规范化的输入验证方法2.2失效的身份认证和会话管理2.2.1描述与认证和会话管理相关的应用程序功能往往得不到正确管理,这就导致攻击者破坏密3码、密匙、会话令牌或利用实施漏洞冒充其他用户身份。2.2.2危害这些漏洞可能导致部分甚至全部帐户遭受攻击。一旦攻击成功,攻击者能执行合法用户的任何操作。因此特权帐户会造成更大的破坏。2.2.3案例2.2.4解决方法使用内置的会话管理功能。使用单一的入口点。确保在一开始登录SSL保护的网页。获取注销的权利;添加超时;确保你使用的是安全相关的功能;使用强大的认证;不进行默认身份验证42.3跨站脚本(XSS)2.3.1描述跨站脚本是最普遍的web应用安全漏洞。当应用程序在发送给浏览器的页面中包含用户提供的数据,但没有经过适当验证或转译,就会导致跨站脚本漏洞。目前常见的3中XSS漏洞:1)存储式;2)反射式;3)基于DOM。2.3.2危害攻击者能在受害者浏览器中执行脚本以劫持用户会话、迫害网站、插入恶意内容、重定向用户、使用恶意软件劫持用户浏览器等等。2.3.3案例2.3.4解决办法对所有不可信的输入数据进行恰当的转义escape。使用白名单的具有恰当的规范化解码功能的输入验证方法.使用内容安全策略(CSP)来抵御整个站点的攻击52.4直接引用不安全的对象2.4.1描述所谓直接引用不安全的对象,即Insecuredirectobjectreferences,意指一个已经授权的用户,通过更改访问时的一个参数,从而访问到原本其并没有得到授权的对象。Web应用往往在生成Web页面时会用它的真实名字,且并不会对所有的目对象访问时来检查用户权限,所以这就造成不安全的对象直接引用的漏洞。我们看如下的一个示例,也许这样就更容易理解什么是不安全的对象直接引用。攻击者发现他自己的参数是6065,即?acct=6065;他可以直接更改参数为6066,即?acct=6066;这样他就可以直接看到6066用户的账户信息。2.4.2危害这种漏洞能损害参数所引用的所有数据。除非名字空间很稀疏,否则攻击者很容易访问该类型的所有数据。2.4.3案例62.4.4解决方法使用基于用户或会话的间接对象访问,这样能防止攻击者直接攻击未授权资源.访问检查:对任何来自不受信源所使用的所有直接对象引用都进行访问控制检测,这样才能确保用户对要求的对象有访问权限.2.5安全配置错误2.5.1描述安全配置错误可以发生在一个应用程序堆栈的任何层面,包括平台、Web服务器、应用服务器、数据库、架构和自定义代码。攻击者通过访问默认账户、未使用的网页、未安装补丁的漏洞、未被保护的文件和目录等,以获得对系统未授权的访问。2.5.2危害系统可能在未知的情况下被完全攻破,用户数据可能随着时间推移而被全部盗走或者篡改。2.5.3案例72.5.4解决办法自动化安装部署,保证开发、QA、产品环境的配置尽量相同,减少部署一个新安全环境的耗费。及时了解并部署每个环境的软件更新和补丁信息使用提供有效分离和安全性强大的应用程序架构实施漏洞扫描和安全审计,以帮助检查错误的配置或者未安装的补丁2.6敏感信息泄漏2.6.1描述保护与加密敏感数据已经成为网络应用的最重要的组成部分。最常见的漏洞是应该进行加密的数据没有进行加密。使用加密的情况下常见问题是不安全的密钥和使用弱算法加密。2.6.2危害攻击者能够盗取或篡改机密的或私有的信息攻击者通过这些秘密信息而进行下一步的攻击造成企业声誉破损,用户满意度下降,甚至会有法律诉讼等。82.6.3案例2.6.4解决办法预测一些威胁,加密数据的存储和传输尽快清除没有必要存放的重要的/敏感数据确保使用合适强大的标准算法和密钥,并且密钥管理到位.确保使用密码专用算法存储密码禁用自动收集敏感数据,禁用包含敏感数据的页面缓存.2.7缺少功能级访问控制2.7.1描述有时功能级的保护是通过系统配置管理的,当系统配置错误时,开发人员必须做相应的代码检查,否则应用程序不能正确的保护页面请求。攻击者就是利用这种漏洞访问未经授权的功能模块。92.7.2危害攻击者很容易就把网址改成享有特权的网页,这样就可以使用匿名或普通用户访问未受保护的私人页面,从而提升未授权功能和相关数据信息。2.7.3案例2.7.4解决办法检查管理权限的过程并确保能够容易进行升级和审计,切忌硬编码。默认缺省情况下,应该拒绝所有访问的执行权限。对于每个功能的访问,需要明确的角色授权。检查每个功能分配的权限合理有效。2.8跨站请求伪造(CSRF)2.8.1描述跨站请求伪造CSRF,是利用了网站允许攻击者预测特定操作的所有细节这一特点。由于浏览器自动发送会话cookie等认证凭证,导致攻击者能够创建恶意的web页面来产生伪造请求。这些伪造的请求很难和合法的请求区分开。CSRF听起来像跨站脚本(XSS),但它与XSS不同,并且攻击方式几乎相左。XSS利10用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。2.8.2危害攻击者能够让受害用户修改任何允许修改的数据,执行任何用户允许的操作。例如修改密码、登陆注销等。2.8.3案例2.8.4解决办法给每个HTTP请求添加一个不可预测的令牌,并保证该令牌对每个用户会话来说是唯一性。最好的办法是将独有的令牌包含在隐藏字段中,通过HTTP请求发送,避免在URL中暴露出来。要求用户重新认证或者判断他们是一个真实的用户。112.9使用含有已知漏洞的组件2.9.1描述开发人员使用的组件也会含有漏洞,这些漏洞能够被自动化工具发现和利用。然后攻击者根据需要定制攻击代码并实施攻击。2.9.2危害根据漏洞的级别,严重的可能造成主机被完全接管和数据泄漏。2.9.3案例2.9.4解决办法标识正在使用的所有组件及其版本。及时关注这些组件的安全信息并保证他们是最新的。建立使用组件的安全策略,禁止使用未经安全评估的组件。在适当情况下,对组件进行安全封装,