第五章-界面劫持
内容纲要
5-1. 概述
界面操作劫持攻击 是一种基于视觉欺骗的Web会话劫持攻击,通过在网页的可见输入控件上覆盖一个不可见的iframe,使用户误以为在操作可见控件,劫持用户的操作行为,执行不可见框中的恶意劫持代码,在用户不知情情况下执行窃取敏感信息、篡改数据等攻击。
界面劫持攻击主要分三种
点击劫持(Clickjacking)
劫持鼠标点击操作
拖放劫持(Drag&Dropjacking)
劫持鼠标拖放操作
- 譬如拖放图片完成上传,拖放文字完成粘贴复制。
- 不受同源策略限制,拖放操作可跨域。
- 可通过此攻击演化出其他更广泛形式,如2011年cookiejacking攻击由于本地Cookie可用
<iframe>
标签嵌入,进而可利用拖放劫持来盗取用户Cookie。
触屏劫持(Tapjacking)
劫持触屏点击及滑动操作。
5-2. 技术原理
5.2.1. 透明层+iframe
- 透明层使用CSS样式实现- 透明层使用CSS样式实现
- IE--
filter:alpha(opacity=50) //0-100,越小透明度越高
- Chorme、Firefox、Safari、Opera--
opacity:0.5 //数值从零到一,越小越透明
- 控件之间层次关系使用z-index,任何浏览器均支持。
z-index:1, 数值可以是负数,高数值的控件会位于低数值控件前面,数值越高,控件越靠近用户。
- IE--
- 使用iframe来嵌入被劫持的页面。- 使用iframe来嵌入被劫持的页面
<iframe id="victim" src="http://www.victim.com"scrolling="no">
5.2.2. 点击劫持技术
样例简析 clickjacking.html
- clickjacking.html用户可见的伪装页面,字啊页面中设置iframe所在层为透明层,并在iframe中嵌套inner.html页面
- 在clickjacking.html页面设计Click Me按钮位置与inner.html中login 按钮位置重合。
- 用户以为点击clickjacking.html中Click Me按钮,实际上点击的是inner.html的Login按钮
(个人认为和CSRF思想类似)
5.2.3. 拖放劫持技术
dataTransfer对象
拖放劫持攻击中,需要一种数据传递的方法才能真正达到攻击效果。为了通过拖放操作传递数据,在IE5.0后引入了dataTransfer对象,作为event对象的属性出现,用于被拖放对象传递字符串到放置对象。dataTransfer目前是HTML的一部分。
dataTransfer对象定义了两个主要方法:getData和setData:
event.dataTransfer.setData("text","sometext");
event.dataTransfer.setData("URL","http://www.test.com");
var url = event.dataTransfer.getData("URL");
var text = event.dataTransfer.getData("text");
- setData操作完成向系统剪贴板中储存需要传递的数据,传递数据分为两种类型:文本类型及URL数据。HTML5扩展中,其允许指定任意的MIME类型。
- getData操作完成获取由setData所存储的数据。
拖放函数
拖放操作的API函数
5.2.4.触屏劫持
要点:
桌面浏览器
Web于移动端的适应
可视区域 viewport
除去工具栏、状态栏、滚动条等之后网页的可视区域。
隐藏URL地址栏
可通过代码在全面模式之外隐藏URL地址栏
触屏函数
触屏API函数
5-3. 实例
P106 -- P121
5-4. 危害
- 突破了CSRF防御策略,是社工色彩很强的跨域操作。
- 删除与篡改数据
- 偷取隐私
- 爆发蠕虫