回归最本质的信息安全

如何用Cross-Site Scripting和MITM绕过NoScript安全套件

2016年9月18日发布

3,757
0
0

导语:NoScript是免费开源的安全套件,对非可信站点提供JavaScript,Java,Flash和其他插件进行保护,同时也提供一些额外的保护,从而最大限度的保护用户。

概要

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. 验证白名单中的网站,删除不必要的站点

​本文翻译于mazinahmed,如若转载,请注明来源于嘶吼: http://www.4hou.com/technology/1998.html

点赞 0
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

Change

Change

嘶吼编辑

发私信

发表评论