IE下的一个安全BUG —— 可实时跟踪系统鼠标位置
2012-12-26 00:56
375 查看
IE下的DHTML有各种M$的私有特征,已经是众所周知。其中有个比较有趣就是:event.screenX和event.screenY,可以获得系统级别的鼠标位置坐标。
咋一听,其实也觉得没什么。屏幕上的坐标无非就是:浏览器客户区域里的坐标 + 浏览器窗口坐标 + 客户区偏移,仅此而已。
IE本身就可以通过event和screen对象得到各种屏幕和窗体位置有关的信息。
然而,真正诡异的事还没开始!按照标准的DOM模型定义,只有在触发某个事件的时候,才能从event中获得与该事件相关的参数。
也就是说,只有触发mousemove,等这类mouseXXX鼠标事件时,才有权获取和鼠标有关的参数。然而,在万恶的IE下,任何事件触发后,都能获取event.screenX和event.screenY,甚至在页面最小化时!
当然,你可能会说这还是需要依赖一个事件。然而,这里的事件可以是任意的onxxx这类回调函数,并非局限于UI事件。于是,我们可以人为的制造它!
最简单的例子,给一个new Image设置一个无效的src,它的onerror事件立马就触发了!
于是我们可以在onerror里获取event.screenX,然后继续设置无效的src,再次触发onerror。。。于是我们就可以实时跟踪用户屏幕级别的鼠标指针了。因为onerror的产生不限于任何UI消息,因此页面最小化或非活动状态下,事件仍然能够触发!
测试地址:http://www.etherdream.com/FunnyScript/CursorPosTest.html
至于能不能获取鼠标或键盘哪个键被按下,很不幸,真的不可以。如果捕捉全局按键,哪岂不是可以监听密码输入了。。。
事实上,onerror这类非UI事件的触发,根本就没有任何鼠标或键盘参数传入浏览器窗体,所以也就无法获取各种鼠标键盘信息。至于event.screenX,唯一的解释估计它是event的一个Getter,内部直接调用了GetCursorPos这个Win API,并非事件的触发者提供了这属性。
如果某个页面植入了这样的跟踪代码,然后将坐标位置通过socket.io实时传送回来,岂不是很有趣。。。
咋一听,其实也觉得没什么。屏幕上的坐标无非就是:浏览器客户区域里的坐标 + 浏览器窗口坐标 + 客户区偏移,仅此而已。
IE本身就可以通过event和screen对象得到各种屏幕和窗体位置有关的信息。
然而,真正诡异的事还没开始!按照标准的DOM模型定义,只有在触发某个事件的时候,才能从event中获得与该事件相关的参数。
也就是说,只有触发mousemove,等这类mouseXXX鼠标事件时,才有权获取和鼠标有关的参数。然而,在万恶的IE下,任何事件触发后,都能获取event.screenX和event.screenY,甚至在页面最小化时!
当然,你可能会说这还是需要依赖一个事件。然而,这里的事件可以是任意的onxxx这类回调函数,并非局限于UI事件。于是,我们可以人为的制造它!
最简单的例子,给一个new Image设置一个无效的src,它的onerror事件立马就触发了!
于是我们可以在onerror里获取event.screenX,然后继续设置无效的src,再次触发onerror。。。于是我们就可以实时跟踪用户屏幕级别的鼠标指针了。因为onerror的产生不限于任何UI消息,因此页面最小化或非活动状态下,事件仍然能够触发!
测试地址:http://www.etherdream.com/FunnyScript/CursorPosTest.html
至于能不能获取鼠标或键盘哪个键被按下,很不幸,真的不可以。如果捕捉全局按键,哪岂不是可以监听密码输入了。。。
事实上,onerror这类非UI事件的触发,根本就没有任何鼠标或键盘参数传入浏览器窗体,所以也就无法获取各种鼠标键盘信息。至于event.screenX,唯一的解释估计它是event的一个Getter,内部直接调用了GetCursorPos这个Win API,并非事件的触发者提供了这属性。
如果某个页面植入了这样的跟踪代码,然后将坐标位置通过socket.io实时传送回来,岂不是很有趣。。。
相关文章推荐
- IE下的一个安全BUG —— 可跟踪用户的系统鼠标位置
- 关于在IE下的一个安全BUG --可用于跟踪用户的系统鼠标位置
- IE浏览器鼠标坐标跟踪安全风险,通杀全版本---IE的最大特色
- bugzilla一个free的bug跟踪系统
- 用BCB做一个自己的Color Dector --- 实时显示鼠标所在位置的像素值
- windows 2003/2008 禁用关闭事件跟踪程序 自动登录 禁用 IE 增强的安全配置
- IE支持DOM的一个bug。
- 做的一个培训机构用跟踪生源的简单系统(VS2008+Sql-server express 2005)
- Mantis:Bug 跟踪管理系统 在 IIS5 下安装
- 《信息安全系统设计基础》实验三 实时系统的移植
- 一个Linux系统安全设置的Shell脚本的分享(适用CentOS)
- 实时显示鼠标指针相对于浏览器X轴Y轴坐标位置
- Microsoft.Practices.Unity 的一个线程安全Bug浅析
- TaintDroid:智能手机监控实时隐私信息流跟踪系统(一)
- 现在在做一个WEB的站内消息系统,从工具栏位置弹出一徐徐上升的窗口
- 取消服务器系统的 IE 安全增强(2003、2008)
- js div拖拽实现兼容ie/firefox js之鼠标位置深入解析
- 获取事件目标对象的位置坐标或者鼠标位置坐标(兼容IE和火狐)
- Bug 跟踪管理系统 Mantis 在 IIS5 下安装指南