当前位置:主页>科 研>学术交流>

JavaScript常见安全漏洞及自动检测技术(2)

2、通过URL重定向钓鱼

网络钓鱼是一个通称,代表试图欺骗用户交出私人信息,以便电子欺骗身份。通过URL重定向钓鱼指的是Web页面会采用HTTP参数来保存URL值,且Web页面的脚本会将请求重定向到该保存的URL上,攻击者可以将HTTP参数里的URL值改为指向恶意站点,从而顺利启用网络钓鱼欺骗当前用户并窃取用户凭证。清单5给出了较为常见的含有通过URL重定向钓鱼漏洞的代码片段。

清单5.执行重定向的JavaScript代码片段

可以看出,这些JavaScript脚本负责执行重定向,新地址是从document.location、document.URL或者document.referer等DOM元素的属性值中截取出来的,譬如用户输入清单6所示。

清单6.执行重定向的URL

显然用户一旦执行了清单6所示URL,将被重定向到钓鱼网站。这个漏洞的原理很简单,比服务器端的重定向漏洞更好理解。但通过URL重定向钓鱼的情况下,钓鱼站点的网址并不会被服务端拦截和过滤,因此,这个漏洞往往比服务器端重定向漏洞更具有隐蔽性。

3、客户端JavaScript Cookie引用

Cookie通常由Web服务器创建并存储在客户端浏览器中,用来在客户端保存用户的身份标识、Session信息,甚至授权信息等。客户端JavaScript代码可以操作Cookie数据。如果在客户端使用JavaScript创建或修改站点的cookie,那么攻击者就可以查看到这些代码,通过阅读代码了解其逻辑,甚至根据自己所了解的知识将其用来修改cookie。一旦cookie包含了很重要的信息,譬如包含了权限信息等,攻击者很容易利用这些漏洞进行特权升级等攻击。

4、JavaScript劫持

许多Web应用程序都利用JSON作为Ajax的数据传输机制,这通常都容易受到JavaScript劫持攻击,传统的Web应用程序反而不易受攻击。JSON实际上就是一段JavaScript,通常是数组格式。攻击者在其恶意站点的页面中通过<SCRIPT>标签调用被攻击站点的一个JSON动态数据接口,并通过JavaScript Function Hook等技术取得这些JSON数据。如果用户登录被攻击网站后(假定其身份认证信息是基于Session Cookie来保存的),又被攻击者诱引访问了恶意站点页面,那么,由于<SCRIPTsrc=">这种标签的请求会带上Cookie信息,恶意站点会发送JSON数据获取请求至被攻击站点,被攻击站点服务器会认为当前请求是合法的,并返回给恶意站点当前用户的相关JSON数据,从而导致用户数据泄密。整个过程相当于一个站外类型的跨站点请求伪造CSRF攻击。

随着Ajax的进一步推广,以及HTML5的逐步应用,还有更多的客户端安全漏洞出现。目前对于JavaScript的安全研究尚不多,新推出的HTML5客户端存储、跨域通信等新特型也都跟安全紧密相关,有兴趣的读者可以作进一步阅读。鉴于笔者知识有限,JavaScript相关安全漏洞暂且分享这么多,下面将谈谈JavaScript安全漏洞的检测技术。

自动化检测JavaScript安全漏洞

正如我们所熟知,检测代码安全漏洞一般有白盒检查和黑盒检查。白盒检查侧重于对代码的分析,可以通过手工代码审查,或者自动代码分析工具。黑盒检查主要是模拟黑客攻击的方式进行渗透测试。通常而言,黑盒检查的准确度高一些,但代码覆盖面比较小,而白盒检查的代码覆盖率较高,但误报率比较高。两种方式相结合能够互相弥补不足,混合检查方式将会是未来的趋势。

结合JavaScript代码而言,出于跨浏览器兼容、更好的Ajax特性需求等原因,越来越多的Web应用依赖于第三方的JavaScript代码库,譬如Dojo、JQuery等。这些代码库为了降低文件大小,往往都进行了代码压缩,导致其可读性极差,因此手工代码审查几乎不具备可行性。此外,页面JavaScript调用入口很多,手工对其进行渗透测试的工作量和难度都非常大。因此,我们需要推荐使用自动化测试工具来检测JavaScript安全漏洞。

Rational AppScan JSA原理简述

JSA是RationalAppScanStandardV8.0新推出的一项AppScan扩展,用来进行执行静态JavaScript分析,以检测常见客户端安全漏洞。JSA融合了JavaScript静态污点分析技术和网站动态爬虫技术。简而言之,AppScan会保存爬虫所探索到的所有URL的完整的HTTP响应,然后JSA对这些响应页面逐个进行JavaScript代码分析。JSA在分析每个页面时应用两个阶段:数据流分析和字符串分析。首先,JSA查找从源(Source)到接收器(Sink)中未经过清除工具(Sanitizer)的轨迹。如果可找到此轨迹(Trace),那么JSA将在第二步中使用字符串分析的变体——字符串前缀分析(SPA)进行验证。相比于单纯的JavaScript代码静态分析技术而言,JSA技术更为先进和准确,因为它是在完全解析好的HTML页面及DOM环境中进行安全漏洞分析。

如今Web2.0网站及Ajax应用中,HTML页面往往都需要浏览器基于服务器响应里的HTML和JavaScript代码进行动态解析后才形成完整的HTML和DOM,单纯基于服务器响应中的JavaScript代码进行静态污点分析存在一个明显缺陷--其所测JavaScript代码及执行环境不一定完整,因此它无法保证测试的准确度和全面性。JSA正是克服了以上缺点,融合了白盒检测和黑盒检测两种测试方法的优点,并引入IBM的字符串分析技术,所以JSA有着更好的准确性和全面性。

(责任编辑:)

分享到:

更多
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
  • 微笑/wx
  • 撇嘴/pz
  • 抓狂/zk
  • 流汗/lh
  • 大兵/db
  • 奋斗/fd
  • 疑问/yw
  • 晕/y
  • 偷笑/wx
  • 可爱/ka
  • 傲慢/am
  • 惊恐/jk
用户名: 验证码:点击我更换图片
资料下载专区
图文资讯

容器是如何让“一切都是代码”成为现实的

容器是如何让“一切都是代码”成为现实的

现代应用的发展在很大程度上要归功于DevOps运动的蓬勃兴起以及该运动所产生的各种自动...[详细]

如何快速掌握一门新技术/语言/框架

如何快速掌握一门新技术/语言/框架

IT行业中的企业特点是都属于知识密集型企业。这种企业的核心竞争力与员工的知识和技能...[详细]

建高效数据中心有径可循

建高效数据中心有径可循

能耗问题一直是各大数据中心的心头之痛。有数据表明,2015年我国数据中心能耗预计将高...[详细]

2015黑帽大会:网络灾难后 重建IT安全

2015黑帽大会:网络灾难后 重建IT安全

在遭遇网络灾难后重建IT安全似乎是不可能完成的任务,但根据安全专家Christina Kubeck...[详细]

面对DNS劫持 企业移动应用该如何防护?

面对DNS劫持 企业移动应用该如何防护?

DNS(Domain Name System)劫持又称域名劫持,是指对正常的域名解析请求加以拦截,转而...[详细]

返回首页 返回顶部