一个网站图标引发的血案!绕过同源策略,判断你是否登录了某网站
前言
我要告诉大家的是,在没有得到你同意的情况下,目前大多数主流的网络平台都会泄漏你的登录状态。无论你当前是否进行了登录操作,攻击者都可以检测到你电脑登录了那些网络平台。而且目前有很多平台可以提供人口统计以及个性分析之类的服务,所以攻击者也可以就此推测出你的人物特性。
演示站点:【点我访问】
技术分析
对于绝大多数的平台而言,它们都可以利用登录机制来检测用户是否登录了自己的网络服务。虽然这个漏洞已经存在多年了,而且这也是一个众所周知的漏洞,但是目前大多数公司似乎并不打算去修复它。
需要注意的是,这个漏洞的利用方法非常简单,而且修复这个漏洞也十分容易。接下来,我会以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
一个网站图标引发的血案!绕过同源策略,判断你是否登录了某网站相关推荐
- 一个“Spring轮子”引发的“血案”(4)
事件的升级,国产技术社区中所存现出来的浮躁.世态炎凉,在我的一篇<80前>一文,终于引爆了出来. <80前>一文是一个长篇,是我吃这么20多年饭,读了不少书的一些所思.所误.所 ...
- 一个@Component注解引发的血案
一个注解@Component引发的血案 首先,我们这个是用springboot架构来实现的业务 这是项目包结构和配置文件结构这是定时需要执行的任务 这是我执行PromoCodeCMCJob这个定时器的 ...
- 6379端口恶意扫描_DNS重绑定的利用:端口扫描与绕过同源策略
译文声明 本文是翻译文章,文章原作者bookgin,文章来源:http://bookgin.tw 原文地址:https://bookgin.tw/2019/01/05/abusing-dns-brow ...
- 浏览器攻击框架BeEF Part 4:绕过同源策略与浏览器代理
前言 从这一章开始,正式进入了攻击阶段.BeEF提供了大量的攻击模块,可以直接使用.除了已有的模块,BeEF还提供了API,可以使用API来自行开发新的攻击模块.这一章,要介绍如何绕过同源策略,还会介 ...
- 一个由正则表达式引发的血案
阿里妹导读:周末快到了,今天为大家送上一篇很有意思的小文章,具有提神醒脑之功效.作者是来自阿里巴巴LAZADA产品技术部的申徒童鞋. 血案由来 近期我在为Lazada卖家中心做一个自助注册的项目,其中 ...
- 转:一个Sqrt函数引发的血案
转自:http://www.cnblogs.com/pkuoliver/archive/2010/10/06/1844725.html 源码下载地址:http://diducoder.com/sotr ...
- 一个Sqrt函数引发的血案
我们平时经常会有一些数据运算的操作,需要调用sqrt,exp,abs等函数,那么时候你有没有想过:这个些函数系统是如何实现的?就拿最常用的sqrt函数来说吧,系统怎么来实现这个经常调用的函数呢? 虽然 ...
- 一个缓存穿透引发的血案
2010年9月23日,Facebook遭遇了迄今为止最严重的宕机事件之一,网站关闭了4个小时.为恢复工作,不得不让FB下线,影响了10亿用户. 在事后的故障报告中提到: 今天,我们修改了一个错误的配置 ...
- 同源策略禁止读取位于_用浏览器缓存绕过同源策略(SOP)限制
本文分享的Writeup是作者在做Keybase.io的漏洞众测中发现的SOP(同源策略)绕过漏洞,由于Keybase.io在用的多个API端点都启用了CORS(跨域资源共享)机制,这种缓解同源策略的 ...
- 前端js爬虫绕过同源策略无需跨域配置
写了一个小说阅读器,基于Vue开发的h5+app. 零成本,无服务器,纯前端跨域爬取数据. 网络小说爬取功能 前端js直接爬取各小说网页的数据,无需跨域. 同源策略是浏览器的行为, 我们可以用操作系统 ...
最新文章
- 更好的内存管理-jemalloc (redis 默认使用的)
- oracle导入与导出,oracle导入与导出
- sap界面功能_功能介面
- 改改Python代码,运行速度还能提升6万倍,Science:先别想摩尔定律了
- (二叉树的遍历)Tree UVa 548
- contos的apt-get安装
- script中的event和for的意思
- 浅谈 js 正则字面量 与 new RegExp 执行效率
- 计算机网络自顶向下方法第6章-链路层和局域网.1
- oppoa1计算机记录删了怎么办,捡到oppoA1怎么解锁
- 中压变频器行业现状调研及趋势分析报告
- SPSS编程-统计自动化-Python脚本开发
- 腾讯微博开放平台开发者服务协议 2.1、3.6 解读
- Few-Shot Video Object Detection
- 前端超炫表白干货(一)
- IDEA 问题记录-2022
- 欧美风相册PPT模板
- matlab中normfit的使用
- Python语法——列表、元组、集合、字典
- [AGC004E] Salvage Robots (DP)
热门文章
- zepto.js学习笔记01
- vs2019添加opencv目录和dlib目录
- windows下安装Keras(CPU版)
- 零基础起步Keras+LSTM+CRF的实践命名实体识别NER
- 三种基于感知哈希算法的相似图像检索技术
- 2021-08-06 MD5mysql 加密校验
- matlabif语句怎么用_腾讯面试:一条SQL语句执行得很慢的原因有哪些?
- DevOps使用教程 华为云(7)团队绩效评估 工时统计
- CI 什么是构建 gradle
- 造梦西游外传服务器维护,造梦西游外传V3.5.9版本更新公告 “无限火力”限时开放...