85795

稿费:100RMB

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿

前言

去年我们提过一种很简单的在Edge上实现referer欺骗的技术,该技术允许我们实现referer欺骗甚至是绕过XSS过滤。今天我发现该问题被修复了,因此我决定在补丁上进行尝试寻找问题。老实说,我觉得这只是一种攻击的变种而不是一种绕过。从实践来看,该技术绕过了补丁再次攻击成功,但是从技术角度来看,新方法略有不同。无论如何,让我们一起来探究一下。

漏洞修复前的PoC

在之前的文章中我们提到,我们可以通过简单的打开新的带着期望referer的窗口然后在跳转到目标来实现referer欺骗。两行代码抵过上千文字,看下面的poc代码,whatismyreferer.com会将paypal.com作为referer,而事实上referer应该是执行location.href的页面。

win = window.open("https://www.paypal.com");

win.location.href = "https://www.whatismyreferer.com";

这就足以在Edge实现referer欺骗了,不过这个问题现在已经被修复了。然而,我想出了一个简单的变种,没有debug和分析,仅仅是一个大胆的尝试。我尝试了许多方法来改变最终的URL(用location.replace,meta refresh,window.open等来替代location.href)以测试Edge是否可以被再次欺骗,遗憾的是所有的尝试都失败了。但是,如果URL被iframe从内部更改了会发生什么?referer值会是top还是iframe的URL?

玩转referer

在回答前面的问题前,请记住,通常情况下referer始终应该是设置URL的referer。假设我们的fackbook.com带有一个指向evil.com的iframe,如果iframe改变top URL为paypal.com,paypal收到的referer应该是evil而不是facebook。

85795

上图展示的是Edge上期望的(正确的)行为。然而,如果我们使用location.href来设置定向链接而不是使用常规链接,Edge就犯傻了,这时它会使用top的地址来作为referer。

85795

下面是一个简单的测试页面,用以展示用常规链接和location.href改变top URL之间的区别。它们都会跳转到whereismyreferer.com,但正如你将看到的,常规链接行为是正确的,而top.location.href行为不正确。[展示漏洞的页面]

但是我们如何利用该漏洞呢?很明显facebook上不可能加载evil.com,对吗?然而facebook、yahoo等几乎所有大网站都会加载带有广告的iframe。这些广告则有能力在这些大网站上加载任意页面。当然,这些广告也完全可以用top.location.href来绕过XSS过滤。

就我自己而言,我讨厌理论上的漏洞,因为它们不能让我感到满足。因此,我们的目标是加载一个网站(我们想要欺骗的referer),注入iframe到其中,然后从注入的iframe中通过top.location.href跳转到目标网站。简单点说就是,我们要让whatismyreferer.com(目标)相信用户是从paypal.com(欺骗的referer)跳转过来的,我们要怎样做到呢?

注入iframe

1、打开一个新窗口重定向到paypal。

2、在跳转前注入一个iframe。

3、一旦重定向,iframe内部实现top.location定向到whatismyreferer.com。

这个iframe注入以前在IE上htmlFile/UXSS文章中提到过,我们在这里快速回顾下。当我们打开一个新的窗口时(1)我们可以注入任意我们想要的内容,因为我们还在当前域。这是我们注入iframe(2)的最佳时机。然后一旦重定向发生,Edge将尽力从页面删除所有内容(包括我们的iframe)并渲染paypal。不过,我们将通过简单的来阻断线程。

如何阻断线程?在这种特殊情况下,我们将使用和这里相同的技术,只是一个丑陋的可见粗体警报。当然我们有许多方式来阻断线程并且不弹出警报,不过我们不会在这里提供。接着让我们来创建POC吧!

// Open a new window with a server redirect to paypal

var win = window.open("redir.php?URL=https://www.paypal.com");

// Create an iframe immediately, before it redirects

var ifr = win.document.createElement("iframe");

win.document.appendChild(ifr);

// Make sure the iframe has access to its top (otherwise it will lose it)

win[0].opener = win;

// Block the iframe and once the redirect happens, move to the victim website.

win[0].setTimeout("('Close me once the site starts loading behind');" +

"opener.location='https://www.whatismyreferer.com'");

85795

php iframe referer,【技术分享】通过iframe注入实现referer欺骗相关推荐

  1. 2018 大湾区(深圳) .NET技术分享交流会 第一期

    .NET Core 2.1 已于2018年5月30日正式发布,邀请粤港澳大湾区.NET技术专家和从业人员,一起分享与交流.NET技术的发展方向,提高粤港澳大湾区.NET技术交流氛围,挖掘.NET高级人 ...

  2. 【NEO NEXT社区】高校区块链技术分享会——上海交通大学

    寒假假期转眼即逝 浪完之后该学习了 ..... 这不,学习的好机会到啦 ...... 注意,文末有超大福利 高校区块链技术分享会 NEO-NEXT社区高校公开课--高校区块链技术分享会,是NEO-NE ...

  3. SaToken技术分享文档

    SaToken技术分享 1.什么是SaToken Sa-Token 是一个轻量级 Java 权限认证框架,主要解决:登录认证.权限认证.Session会话.单点登录.OAuth2.0.微服务网关鉴权 ...

  4. 技术分享 | 在GreatDB分布式部署模式中使用Chaos Mesh做混沌测试

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 1. 需求背景与万里安全数据库软件GreatDB分布式部署模式介绍 1.1 需求背景 混沌测试是检测分布式系统不确定性.建 ...

  5. 黑客攻击技术之高级SQL注入技术(转)

    黑客攻击技术之高级SQL注入技术(转)[@more@] 我们知道,在SQL语句中,可以使用各种MySQL内置的函数,经常使用的就是DATABASE().USER().SYSTEM_USER().SES ...

  6. 爱奇艺技术分享:爱奇艺Android客户端启动速度优化实践总结

    本文由爱奇艺技术团队原创分享,原题<爱奇艺Android客户端启动优化与分析>. 1.引言 互联网领域里有个八秒定律,如果网页打开时间超过8秒,便会有超过70%的用户放弃等待,对Andro ...

  7. 《撸代码 学习 IOC注入技术1 》—— 布局注入 与 控件注入

    不诗意的女程序媛不是好厨师~ 转载请注明出处,From李诗雨-https://blog.csdn.net/cjm2484836553/article/details/104539874 [源代码下载地 ...

  8. Inplayable技术分享

    Inplayable技术分享 运维 设计模式 Web 安全 工具 语言 python 运维 <aws lambda 通过codebuild上线踩坑指南之 lambda 进程被占用 status ...

  9. iOS-FXDanmaku弹幕库介绍、相关技术分享

    前言 去年, 2016年, 一大波直播平台在移动端涌出, 直播慢慢步入了人们的视角. 网上如今能够看到各式各样的直播, 如秀场直播.游戏直播.体育直播.娱乐直播等等. 在各种类型的直播中, 弹幕在PC ...

最新文章

  1. kafka 分区和副本以及kafaka 执行流程,以及消息的高可用
  2. httpclient base64 文件上传_选择HttpClient还是OkHttp?
  3. 【转载】 Asp.net Mvc 3当然也不会例
  4. Pandas 统计分析基础 笔记4 任务4.4 使用分组聚合进行组内计算
  5. 学计算机广东2B大学,2021年广东省较好的2B大学排名,广东2B大学排名出炉
  6. (5)FPGA面试题同步电路和异步电路
  7. comboxedit不可输入_javafx combobox在edit状态下无法选择
  8. Ubuntu 查看分区的磁盘格式
  9. 前端性能优化方案(图片)
  10. 一个MOS 电平转换电路引发的思考可避免更多的坑
  11. python银行利息问题_(完整版)存款利率问题应用题
  12. C语言rewind函数返回值为空,我用rewind函数没把指针直到开始,关闭文件然后打开就行。帮忙看看...
  13. 群晖nas存储系统原理_今夜来谈群晖----缓存、NAS和SSD那些事
  14. VBA 为什么你redim() 动态二维数组总出错?因为 redim 动态数组不太适合和循环搭配
  15. Android apk瘦身之使用TinyPng压缩图片
  16. win7启动无法自动修复此计算机,win7系统启动修复_win7系统中启动修复无法自动修复此计算机情况的三种解决方法介绍_win7双系统启动修复...
  17. 被拒绝100天 Rejection Therapy 100 Days
  18. 05 Bean实例化整体流程
  19. BMP180气压传感器调试
  20. 《PyInstaller打包实战指南》

热门文章

  1. IAMCameraControl
  2. bond解除 centos7_centos7.1-bond丢包问题
  3. WorkBench安装教程
  4. 微软深度神经网络语音,定制个性化的自然人声
  5. AttributeError str object has no attribut 异常错误
  6. Mac下删除.m2文件夹
  7. 堡垒机与JumpServer
  8. 30岁,“干电池”快被榨干,薪资翻倍要到何时···
  9. Android_菜单组
  10. Ubuntu apt 下载离线包