界面操作劫持

1.定义:

界面操作劫持是一种基于视觉欺骗的Web会话劫持攻击,它通过在网页的可见输入控件上覆盖一个不可见的框,使得用户误以为在操作可见控件,而实际上用户操作行为被其不可见的框(  iframe),使得用户误以为在操作可见控件,而实际上用户操作行为被其不可见的框所劫持,执行不可见框中的恶意劫持代码,从而完成在用户不知情的情况下窃取敏感信息,篡改数据等攻击。

2.分类:

点击劫持:劫持用户的鼠标点击操作,

拖放劫持:

触屏劫持:多发生在移动,智能设备上

3.技术实现

i.点击劫持透明层+iframe

这里注意几个css属性

<!DOCTYPE html>
 <html>
     <head>
         <title>CLICK JACK!!!</title>
         <style>
        #click{
		width:100px;
        left:20px;
		top:20px;
		position:absolute;
		z-index: 2
		}
		#hidden{
		height:40px;
		width:120x;
		position:absolute;
		filter:alpha(opacity=100);
		opacity:0.5;
		z-index:0
		}
         </style>		 
     </head>
     <body>
        <input id="click" style="width:100px;" value="Click Me" type="button"/>
		<iframe id="hidden" src="inner.html" scrolling="no"></iframe>
     </body>
 </html>

 

filter:alpha(opacity=50)数值从0到50,数值越小,透明度越高。用于IE

opacity:0.5  数值从0到1,数值越小,透明度越高。用于firefox,Chrome

z-inex:1数值可以是负数,高数值的控件更贴近用户

以及postion:absolute可以让两者有重合的可能。

同时,再通过

 top,left控制位置,最终导致click的button和login完全吻合

ii.拖放劫持

1.dataTransfer对象

在拖放劫持攻击中,还需要一种数据传递的方法才能真正达到攻击效果。为了能协助通过拖放操作传递数据,

在IE  5.0以后引入了dataTransfer对象。它作为event对象的一个属性出现,用于从被拖动的对象传递字符串到放置对象,dataTransfer现在是HTML5草案的一部分。

dataTransfer  对象定义了两个主要方法:getData和setData,语句如下:

event.dataTransfer.setData("text","sometext");
event.dataTransfer.setData("URL","http://www.123.com");
var url=event.dataTransfer.getData("URL");
var text=event.dataTransfer.getData("text");

setData操作完成向系统剪贴板中存储需要传递的数据,传递数据分为两种类型:文本数据和URL数据。

在html5的扩展中,其允许指定任意的MIME类型

 

getData操作完成获取由setData所存储的数据

有了dataTransfer

 拖放函数

当鼠标拖动了一个控件,源对象将依次触发以下函数

ondrag    在从drag动作开始,到drop动作结束的过程中,源对象触发的一个事件

ondragstart   在drag动作开始时,源对象上触发的一个事件

ondragend   在drop动作结束时,源对象上触发的一个事件

===============================================

当拖动对象到一个有效的目标上时,目的对象上触发的一个事件

ondragenter   在drag动作进入某一有效目的对象时,该目的对象上触发的一个事件

ondragover     在drag动作进入某一有效的对象后,该目的对象上触发的一个事件

ondragleave     在drag动作离开某一有效的目的对象时,该目的对象上触发的一个事件

ondrop             在任何有效目的对象上进行drop操作时,该目的对象上触发的一个事件

 2.触屏劫持技术

移动设备的触摸屏更加微小,在视觉欺骗上,更胜一筹

eg:IPhone     在iPhone,iPad,iTouch的safari上可以使用添加到主屏按钮将网站添加到主屏幕

    i. 添加桌面图标的语句为:

      <link rel="apple-touch-icon" href="icon.png"/>

     添加启动画面的语句为

     <link rel="apple-touch-startup-image" href="startup.png"/>

      全屏显示的语句为

      <meta name="apple-mobile-web-app-capable" content="yes">

     改变状态栏

     <meta name="apple-mobile-web-app-statu-bar-style" content="black">

    ii.

      可视区域viewport

      <meta name="viewport" content="width=320;initial-sscale=1.0,maximum-scale=1.0;user-scalable=no;"/>

       想通过改变viewpoin改变可视区域

      参数如下

       width   viewport的宽度(范围从200到10000,默认为980像素)     

       initial-scale(初始的缩放比例)

      maximum-scale  允许用户缩放的最大比例

      user-scalable   用户是否可以手动收缩

      隐藏URL地址栏

      除了用全屏模式隐藏URL地址栏,还可以通过以下方式

    <body onload="seTimeout(function(){window.scrollTo(0,1)},100);">

    </body>

 ========================================================================================

目标的http响应头是否设置好了X-Frame-Option字段

X-Frame-Option配置

在返回报文中有这个http头

该配置有三个选项

1.DENY:浏览器拒绝当前页面加载任何Frame页面

2.SAMEORIGIN:  frame页面的地址只能为同源名下的页面

3.ALLOW-FROM:origin为允许iframe加载的页面地址

Allow-From-origin

具体的设置方法

具体的设置方法:

Apache配置:

 Header always append X-Frame-Options SAMEORIGIN

nginx配置:

 add_header X-Frame-Options SAMEORIGIN;

IIS配置:

 <<span class="title">system.webServer> ... <<span class="title">httpProtocol> <<span class="title">customHeaders> <<span class="title">add name="X-Frame-Options" value="SAMEORIGIN" /> </<span class="title">customHeaders> </<span class="title">httpProtocol> ... </<span class="title">system.webServer>

 ii.目标是否有JavaScript的Busting 机制

 

 

 

 

 

 

   

posted @ 2015-10-13 17:36  平何去何  阅读(212)  评论(0)    收藏  举报