一个网站图标引发的血案!绕过同源策略,判断你是否登录了某网站

前言

我要告诉大家的是,在没有得到你同意的情况下,目前大多数主流的网络平台都会泄漏你的登录状态。无论你当前是否进行了登录操作,攻击者都可以检测到你电脑登录了那些网络平台。而且目前有很多平台可以提供人口统计以及个性分析之类的服务,所以攻击者也可以就此推测出你的人物特性。

演示站点:【点我访问】

技术分析

对于绝大多数的平台而言,它们都可以利用登录机制来检测用户是否登录了自己的网络服务。虽然这个漏洞已经存在多年了,而且这也是一个众所周知的漏洞,但是目前大多数公司似乎并不打算去修复它。

需要注意的是,这个漏洞的利用方法非常简单,而且修复这个漏洞也十分容易。接下来,我会以facebook.com为例子来给大家介绍这项技术的工作原理。

登录重定向机制是如何工作的?

首先,我们要了解什么是登录重定向机制。假设你已经登录并正在访问https://www.facebook.com/bookmarks/pages这个页面。

现在,在一个单独的网页标签中访问这个URL地址,此时你在这个网页标签中并没有进行登录操作,因此你会被下面这个URL地址重定向至网站服务的登录页面:

https://www.facebook.com/login.php?next=https%3A%2F%2Fwww.facebook.com%2Fbookmarks%2Fpages

请注意上述URL地址中的next参数,该参数的值如下:

https%3A%2F%2Fwww.facebook.com%2Fbookmarks%2Fpages

我们就是从该参数中的这个地址跳转过来的,当我们完成了登录操作之后,上面的这个URL会将我们重定向至之前我们所要访问的那个页面。

如果我们现在已经登录了,那么在一个新的浏览器页面标签下访问这个URL地址(https://www.facebook.com/login.php?next=https%3A%2F%2Fwww.facebook.com%2Fbookmarks%2Fpages),那么浏览器会直接将我们定向至这个页面。所以我们可以得出结论:

1.  如果你已经登录了:URL将返回next参数中的地址;

2.  如果你没有登录:URL将返回网站服务的登录页面;

绕过同源策略

这个URL地址有什么用呢?同源策略可以防止我们从除了https://facebook.com之外的其他域读取这个请求所返回的结果。

同源策略对于HTML页面来说是非常严格的,但是它允许我们从其他域接收图片资源。所以,如果next参数中的资源是图片资源的话,我们就可以从自己的网站来读取这部分数据了。Facebook只会检测URL地址中next参数的值是否以https://facebook.com开头,所以我们只需要在Facebook的网站中找一张图片文件就可以了。这应该没什么困难吧?其实,这确实有点难!因为Facebook网站中的图片全部托管在域名fbcdn.net。但是还有一张图片几乎是所有Web服务器中都会有的,那就是favicon.ico!

下面给出的就是将网站图标作为next参数时的URL地址:

https://www.facebook.com/login.php?next=https%3A%2F%2Fwww.facebook.com%2Ffavicon.ico

这是一个非常有意思的URL地址:

1.  如果你已经登录了:URL将返回网站图标;

2.  如果你没有登录:URL将返回网站服务的登录页面;

我们可以在自己网站中的某个<img>标签内使用这个URL地址:

<imgsrc="https://www.facebook.com/login.php?next=https%3A%2F%2Fwww.facebook.com%2Ffavicon.ico">

这个<img>标签的属性如下:

1.  如果你已经登录了:你将会接收到网站图标,HTML页面会自动加载这个图片资源,并自动触发onLoad回调事件;

2.  如果你没有登录:你将会接收到网站的登录页面,图标资源会加载失败,并自动触发onError回调事件;

最终的漏洞利用代码如下所示:

<img onload="alert('logged in to fb')"onerror="alert('not logged in to fb')"src="https://www.facebook.com/login.php?next=https%3A%2F%2Fwww.facebook.com%2Ffavicon.ico">

其他平台

这项技术适用于目前绝大多数主流的网络平台,因为很多服务提供商在他们的登录地址中都添加了重定向参数,而且他们也需要在主机中托管网站的图标资源。

更新信息

2016/10/07:Instagram移除了网站根目录下的图标文件,并将其转移至了他们的CDN中。

2016/10/14:Stackoverflow已经修复了这个问题。

2016/10/14:火狐浏览器似乎也修复了这个问题。因为当我们使用新版火狐浏览器访问测试页面时,我们接收到了如下图所示的错误信息:

2016/10/14:Netflix通过将页面重定向至网站主页面以修复这个问题。

这项技术的可利用性和缓解方案

攻击者还可以在去匿名化技术、点击劫持攻击和网络钓鱼攻击中使用这项技术。这样一来,将会给用户带来更大的损失。

因此,为了缓解这个问题所带来的影响,首先就是要禁用所有的第三方cookie。除此之外,你也可以安装类似Privacy Badger和uMatrix这样的浏览器插件来保护你免受此类攻击。

总结

如果你发现还有其他的网站有可能受到这种攻击技术的影响,请你赶快将它们公布出来。我们要向这些平台施加压力,如果这个问题越来越严重,而且越来越多的网站会受此影响的话,也许有一天他们会去修复这个问题的。 

转载于:https://www.cnblogs.com/wwlww/p/8413319.html

一个网站图标引发的血案!绕过同源策略,判断你是否登录了某网站相关推荐

  1. 一个“Spring轮子”引发的“血案”(4)

    事件的升级,国产技术社区中所存现出来的浮躁.世态炎凉,在我的一篇<80前>一文,终于引爆了出来. <80前>一文是一个长篇,是我吃这么20多年饭,读了不少书的一些所思.所误.所 ...

  2. 一个@Component注解引发的血案

    一个注解@Component引发的血案 首先,我们这个是用springboot架构来实现的业务 这是项目包结构和配置文件结构这是定时需要执行的任务 这是我执行PromoCodeCMCJob这个定时器的 ...

  3. 6379端口恶意扫描_DNS重绑定的利用:端口扫描与绕过同源策略

    译文声明 本文是翻译文章,文章原作者bookgin,文章来源:http://bookgin.tw 原文地址:https://bookgin.tw/2019/01/05/abusing-dns-brow ...

  4. 浏览器攻击框架BeEF Part 4:绕过同源策略与浏览器代理

    前言 从这一章开始,正式进入了攻击阶段.BeEF提供了大量的攻击模块,可以直接使用.除了已有的模块,BeEF还提供了API,可以使用API来自行开发新的攻击模块.这一章,要介绍如何绕过同源策略,还会介 ...

  5. 一个由正则表达式引发的血案

    阿里妹导读:周末快到了,今天为大家送上一篇很有意思的小文章,具有提神醒脑之功效.作者是来自阿里巴巴LAZADA产品技术部的申徒童鞋. 血案由来 近期我在为Lazada卖家中心做一个自助注册的项目,其中 ...

  6. 转:一个Sqrt函数引发的血案

    转自:http://www.cnblogs.com/pkuoliver/archive/2010/10/06/1844725.html 源码下载地址:http://diducoder.com/sotr ...

  7. 一个Sqrt函数引发的血案

    我们平时经常会有一些数据运算的操作,需要调用sqrt,exp,abs等函数,那么时候你有没有想过:这个些函数系统是如何实现的?就拿最常用的sqrt函数来说吧,系统怎么来实现这个经常调用的函数呢? 虽然 ...

  8. 一个缓存穿透引发的血案

    2010年9月23日,Facebook遭遇了迄今为止最严重的宕机事件之一,网站关闭了4个小时.为恢复工作,不得不让FB下线,影响了10亿用户. 在事后的故障报告中提到: 今天,我们修改了一个错误的配置 ...

  9. 同源策略禁止读取位于_用浏览器缓存绕过同源策略(SOP)限制

    本文分享的Writeup是作者在做Keybase.io的漏洞众测中发现的SOP(同源策略)绕过漏洞,由于Keybase.io在用的多个API端点都启用了CORS(跨域资源共享)机制,这种缓解同源策略的 ...

  10. 前端js爬虫绕过同源策略无需跨域配置

    写了一个小说阅读器,基于Vue开发的h5+app. 零成本,无服务器,纯前端跨域爬取数据. 网络小说爬取功能 前端js直接爬取各小说网页的数据,无需跨域. 同源策略是浏览器的行为, 我们可以用操作系统 ...

最新文章

  1. 更好的内存管理-jemalloc (redis 默认使用的)
  2. oracle导入与导出,oracle导入与导出
  3. sap界面功能_功能介面
  4. 改改Python代码,运行速度还能提升6万倍,Science:先别想摩尔定律了
  5. (二叉树的遍历)Tree UVa 548
  6. contos的apt-get安装
  7. script中的event和for的意思
  8. 浅谈 js 正则字面量 与 new RegExp 执行效率
  9. 计算机网络自顶向下方法第6章-链路层和局域网.1
  10. oppoa1计算机记录删了怎么办,捡到oppoA1怎么解锁
  11. 中压变频器行业现状调研及趋势分析报告
  12. SPSS编程-统计自动化-Python脚本开发
  13. 腾讯微博开放平台开发者服务协议 2.1、3.6 解读
  14. Few-Shot Video Object Detection
  15. 前端超炫表白干货(一)
  16. IDEA 问题记录-2022
  17. 欧美风相册PPT模板
  18. matlab中normfit的使用
  19. Python语法——列表、元组、集合、字典
  20. [AGC004E] Salvage Robots (DP)

热门文章

  1. zepto.js学习笔记01
  2. vs2019添加opencv目录和dlib目录
  3. windows下安装Keras(CPU版)
  4. 零基础起步Keras+LSTM+CRF的实践命名实体识别NER
  5. 三种基于感知哈希算法的相似图像检索技术
  6. 2021-08-06 MD5mysql 加密校验
  7. matlabif语句怎么用_腾讯面试:一条SQL语句执行得很慢的原因有哪些?
  8. DevOps使用教程 华为云(7)团队绩效评估 工时统计
  9. CI 什么是构建 gradle
  10. 造梦西游外传服务器维护,造梦西游外传V3.5.9版本更新公告 “无限火力”限时开放...