Sniffly: 利用HSTS和CSP嗅探浏览器历史纪录

博主推荐【腾讯云】爆款2核2G云服务器首年40元

14489471134766

Sniffly是一种通过利用HSTS(HTTP Strict Transport Security)和内容安全策略(Content Security Policy)进行攻击的方式,它允许任意网站嗅探用户的浏览器历史。该技术被测试于 Firefox 和 Chrome 浏览器。

Demo

首先可以先参照DEMO的演示,通过使用Firefox/Chrome/Opera,但请先将HTTPS关闭。

演示地址: Sniffly(打开之前,请再确认是否使用Firefox/Chrome/Opera浏览器打开,否则可能引起其他浏览器的崩溃)

工作原理

首先推荐先读一读源文件中的src/index.js,可以先理解下Sniffly是如何工作的。

下面讲介绍其主要的工作原理:

1、首先,用户一开始会先访问嵌入Sniffly的网页;
2、接着,浏览器会先尝试通过http协议,转向使用HTTPS协议从服务器下载图像;
3、这个时候,Sniffly会通过设置 CSP(内容过滤策略)屏蔽图像下载,从而实现阻断从http重定向到https,这是很重要的一步。如果浏览器完成了对https网址的请求,那么随后将会直接接收hsts发过来的 pin码,而接下来的攻击将难以实现。
4、当图像被 CSP所中断,接下来将会调用onerror处理程序。在这种情况下,由onerror处理程序对图像从HTTP重定向到HTTPS的时间进行追踪计算。如果时间是在毫秒内,那么这意味着浏览器不需要发出网络请求,也就是用户以前访问过目标域名。如果时间是100毫秒左右,那么这意味着浏览器需要发出网络请求,也就是用户以前没有访问过目标域名。

寻找HSTS主机地址

加入网站列表,检测哪一台主机是发送 HSTS报文头部信息,

$ cd util
$ ./run.sh > results.log

其中初始配置有100个网址,根据实际的环境,也可以使用不同的网址列表替代进行检测,如全Alexa排名前100万。

通过最大时间跨度对结果进行处理和分类,先排除那些最大时间跨度少于1天以及预下载的。

$ cd util
$ ./process.py > processed.log

执行之后,你可以从process.log中将主机地址复制到src/index.js中。

运行

在Chrome浏览器中访问file:///path/to/sniffly/src/index.html。而在Firefox中,显然是不支持CSP 头部信息使用标签的,所以需要建立一个本地网络服务器,去为CSP HTTP响应头部信息做回应。我的Nginx服务器功能模块如下,

server {
listen 8081;
server_name localhost;
location / {
root /path/to/sniffly/src;
add_header Content-Security-Policy “img-src http:”;
index index.html;
}
}

或者通过分布式配置文件.htaccess

Header set Content-Security-Policy “img-src http:”

又或者通过php发送头部信息

将以下代码段粘贴在脚本的开头(请记得修改index.php名称)

<?php
    $csp_rules = "img-src http:";
    // Just to ensure maximum compatibility
    header(&#039;X-WebKit-CSP: &#039;.$csp_rules);
    header(&#039;X-Content-Security-Policy: &#039;.$csp_rules);
    header(&#039;Content-Security-Policy: &#039;.$csp_rules);
?>
温馨提示

1、目前尚不支持Safari, IE, o或者Chrome (iOS)
2、请将HTTPS功能关闭,浏览器的扩展功能如HTTPS会混淆结果;
3、请勿使用 Tor浏览器,因为时间统计会被四舍五入到接近100毫秒;
4、用户如果有不同的HSTS预置列表(因为有较低版本的浏览器),可能看不到准确结果。

Github地址:Github download

来自FreeBuf

原创文章转载请注明:转载自 七行者博客

本文固定链接: https://www.qxzxp.com/6396.html

Sniffly: 利用HSTS和CSP嗅探浏览器历史纪录:目前有5 条留言

  1. 真是天底下好事多多

    2016-07-31 20:44 [回复]
  2. 0楼
    etsy:

    [蜡烛] 很好的学习文章!谢谢!

    2016-02-28 05:33 [回复]
  3. 0楼
    好书网:

    进来看看

    2016-01-05 10:34 [回复]
  4. 小时候记得油门课程叫自然与社会,兼顾着讲一些安全常识等。曾经被老师提问过一个非常难的问题:“同学把教室钥匙不小心吞进肚子里,你的第一个想法是怎么办?”我迟疑了许久,说:“我觉得应该从窗户爬出去会比较好……。”

    2016-01-04 13:12 [回复]
  5. 0楼
    万紫沁:

    永远支持博主,继续发好贴

    2015-12-12 16:35 [回复]

发表评论

2 + 3 =

快捷键:Ctrl+Enter