第五章-界面劫持

第五章-界面劫持

内容纲要

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, 数值可以是负数,高数值的控件会位于低数值控件前面,数值越高,控件越靠近用户。
  • 使用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防御策略,是社工色彩很强的跨域操作。
  • 删除与篡改数据
  • 偷取隐私
  • 爆发蠕虫

此漏洞防御意识薄弱,无论Web厂商还是用户。

harmoc

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注