概要
NoScript(也就是NoScript安全套件)是免费开源的安全套件,对非可信站点提供JavaScript,Java,Flash和其他插件进行保护,同时也提供一些额外的保护,从而最大限度的保护用户。
NoScript 安全套件是一款火狐浏览器或者Mozilla内核浏览器的插件,主要是用来阻止浏览器运行非可信网站的JavaScript,flash,Java等,只有白名单内的站点才能运行这些代码。
本篇文章主要是讨论几种不同的绕过NoScript安全套件的方式,同时提供了几个解决方案和修复建议。
使用NoScript检测漏洞
这类绕过方式是使用NoScript检测漏洞,这个漏洞主要被JulienVoisin和Gareth Heyes等研究员验证出来的。不过这类漏洞大多已经被修复了,这里就不详细介绍,大家可以直接看原文。
利用白名单站点的Cross Site Script漏洞
这种绕过方式就是通过报名单列表中的网站存在的Cross-Site Scripting漏洞。因为白名单中的站点是允许在浏览器中执行JavaScript脚本的,只要有一个简单的XSS漏洞就可以了。虽然NoScript本身也提供了cross-sitescript过滤器,但是他并不能完全阻止XSS攻击。
验证
安装NoScript的时候live.com站点会被默认加入白名单中。这个站点中我找到了一个XSS漏洞,同时也已经上报给了Microsoft。这个漏洞的详情这里就不详细写,只写一些与绕过相关的部分。
图1 live.com站点中的xss漏洞证明
这个浏览器安装了NoScript,可以看到,XSS被触发了,并没有被NoScript安全套件拦截。
利用MITM攻击
这种攻击方式和其他的都不同,是利用典型的MITM(中间热攻击)自动化绕过NoScript安全套件。
我们现在已经知道NoScript是通过白名单上的站点来确定哪些网站可以自由执行脚本。也就是说,所有的安全全部依赖于白名单上网站的站点安全,以及该网站所在的内网的安全情况。
那么,只要在内网中欺骗用户的浏览器,就能执行JavaScript脚本,NoScript就能被绕过。请注意,这并不是理论上的可行,接下来,我将对此进行演示:
步骤重现
1. 受害者使用Firefox,同时将NoScript安全套件开启 2. 攻击者有权限进入受害者内网 3. 受害者发送一个HTTP请求到一个web站点 4. 攻击者拦截响应包,并且在其中注入一段隐藏的iframe代码,代码指向白名单内的站点 5. 受害者的浏览器向白名单站点发送一个请求 6. 攻击者拦截响应包,并且注入JavaScript代码 7. 受害者的浏览器接收到改过的响应包 8. 浏览器执行JavaScript
POC
关于poc我写过很多,这里我用的是BetterCap框架,这是一款中间人攻击框架。在进行中间人攻击的时候,这个框架是非常好用的。我写的poc也是BetterCap的模块。
使用方法:
$bettercap -G [GATEWAY] -T [TARGET] --proxy--proxy-module hack_noscript_poc.rb
现在,只要受害者浏览器发出一个HTTP请求,BetterCap就会自动完成剩下的所有工作
图2 JavaScript执行了
如上图,已经成功触发了pastebin.com或dvd.netflix.com上的cross-site scripting漏洞,这也是通过BetterCap在内网对受害者进行中间人攻击的结果。
解决方案
以下建议可以减少此类问题:
1. 将NoScript升级到最新版本 2. 如果你想最大程度的保护自己,那么可以根据接下来的部分进行配置
建议
1. 确保“阻止除了HTTPS链接外的网站”选项为“Always” 2. 验证白名单中的网站,删除不必要的站点
还没有评论,来说两句吧...