21.12 其他检查

img646

图21-13 其他检查

21.12.1 测试基于DOM的攻击

(1)对应用程序中包含的每一段JavaScript脚本进行简单的代码审查,确定可通过任何一个专门设计的URL、在相关页面的DOM中引入恶意数据而触发的XSS或重定向漏洞。审查内容包括HTML页面(无论静态或动态生成的页面)中的所有单独的JavaScript文件和脚本。

(2)确定使用以下API的所有情况,使用这些API可访问通过一个专门设计的URL控制的DOM数据:

img647a

(3)在代码中追踪相关数据,确定应用程序对它执行何种操作。如果数据(或它的一个被操纵的表单)被提交给下列API中的一个,那么应用程序可能易于受到XSS攻击:

img647b

(4)如果数据被提交给下列API中的一个,那么应用程序可能易于受到重定向攻击:

img647c

21.12.2 测试本地隐私漏洞

(1)检查拦截代理服务器生成的日志,确定测试过程中应用程序送出的所有Set-Cookie指令。如果发现有任何Set-Cookie指令包含一个将来日期的expires属性,用户的浏览器会将该cookie保持到这个日期。检查传送敏感数据的持久性cookie的所有内容。

(2)如果一个持久性cookie中包含敏感数据,那么本地攻击者就能够截获这些数据。即使这些数据被加密,截获它们的攻击者仍然可以将这个cookie重新提交给应用程序,访问该cookie访问的任何数据或功能。

(3)如果包含敏感数据的页面通过HTTP访问,在服务器响应中寻找缓存指令。如果其中没有下列指令(在HTTP消息头或HTML元标签中),那么相关页面可能被一个或几个浏览器存入缓存:

img648a

(4)确定应用程序中通过URL参数传送敏感数据的所有情况。如果存在这样的情况,检查浏览器的历史记录,证实这些数据已经保存在那里。

(5)对于用户提交敏感数据(如信用卡信息)的所有表单,审查其中的HTML源代码。如果没有在表单标签或输入字段的标签中设置autocomplete=off属性,输入的数据将保存在激活自动完成的浏览器中。

21.12.3 测试脆弱的SSL加密算法

(1)如果应用程序使用SSL进行通信,使用THCSSLCheck工具列出它支持的加密算法和协议。

(2)如果SSL支持脆弱或过时的加密算法和协议,处在适当位置的攻击者就可以实施攻击,降级或破译应用程序用户的SSL通信,访问他们的敏感数据。

(3)一些Web服务器声称它支持某些脆弱加密算法和协议,但如果客户提出请求,它实际上拒绝使用这些算法和协议完成握手。在使用THCSSLCheck工具时,这种情况可能会造成错误警报。可以使用Opera浏览器,尝试通过指定的脆弱协议完成一次握手,确定是否可使用这些协议访问应用程序。

21.12.4 检查同源策略配置

(1)检查/crossdomain.xml文件。如果应用程序允许无限制访问(通过指定<allow-access-from domain=“*” />),来自其他站点的Flash对象可以“叠置”应用程序用户的会话,以进行双向交互。这导致任何其他域可以检索所有数据,并执行任何用户操作。

(2)检查/clientaccesspolicy.xml文件。与Flash类似,如果<cross-domain-access>配置过于宽泛,其他站点将可以与接受测试的站点进行双向交互。

(3)通过添加指定其他域的Origin消息头并检查返回的任何Access-Control消息头,使用XMLHttpRequest测试应用程序如何处理跨域请求。允许任何域、或指定的其他域进行双向交互的安全隐患与Flash跨域策略造成的安全隐患相同。