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