ClickJacking点击劫持

点击劫持(ClickJacking)

1 什么是点击劫持

点击劫持是一种视觉欺骗手段。攻击者使用一个透明不可见的iframe,覆盖在一个网页上,然后诱使用户在该网页上操作,用户将在不知情的情况下点击透明的iframe页面。通过调整iframe页面的位置,可以诱使用户恰好点击在iframe页面的一些功能按钮上

原理很简单,代码示例略。

点击劫持与CSRF攻击都是在用户不知情的情况下诱使用户完成一些动作。但是在CSRF攻击过程中,如果出现用户交互的页面,则攻击可能无法完成。而点击劫持没有这个顾虑,他利用的就是与用户产生交互的页面。

2 Flash点击劫持

一个较为严重的ClickJacking案例,目前Adobe公司已经修复。攻击者构造一系列点击操作,最终控制了用户电脑摄像头。

过程如下:

  1. 制作一个Flash游戏,诱使用户来玩。游戏内容就是让用户去点击一个CLICK按钮,每次点击后这个按钮的位置都会发生变化。
  2. 在这个上面隐藏了一个看不见iframe。
  3. 某些点击是有意义的某些点击是没有意义的。
  4. 最终一步一步打开了摄像头。

3 图片覆盖攻击

Cross Site Image Overlaying,简称XSIO。通过调整图片的style使得,图片能够覆盖在他所指定的任意位置。

比如在自己的主页上,添加一个谷歌的搜索框控件,后面有个Powered by Google的logo,原本点击会进入谷歌主页,如果覆盖掉那个logo换成自己的img,则会进入其他网站(如钓鱼网站)。

图片还可以伪装得像一个正常的链接、按钮。或者在图片中构造一些文字,覆盖在关键的位置,用户甚至不需要点击也能达到欺骗的目的,比如利用XSIO修改页面中的联系电话。

由于<img>标签在很多系统中是对用户开放的,因此在显示中 有很多站点存在被XSIO攻击的可能性。在防御XSIO时,需要检查用户提交的HTML代码中,<img>标签的style属性是否可能导致浮出。

4 拖拽劫持与数据窃取

安全研究者Paul Stone在2010BlackHat大会上发表的演讲,提出“浏览器拖拽事件”导致的一系列安全问题。

很多浏览器开始支持Drag&Drop的API,对象可以是文字或链接,也可以从一个窗口拖拽到另一个窗口,所以拖拽不受同源策略的限制。

“拖拽劫持”的思路是诱使用户从隐藏的不可见的ifram中拖拽出攻击者希望得到的数据,然后放到攻击者能控制的另一个页面中,从而窃取数据。在JS和Java API的支持下,这个过程会变得非常隐蔽。

案例:国内安全研究者xisiger曾经构造了一个针对Gmail的POC。(代码见红宝书p132)。

5 ClickJacking3.0:触屏劫持

智能手机上的点击劫持—TapJacking。
从手机OS的角度来看,触屏操作就是一个事件,手机OS捕捉这些事件执行相应操作。

安全研究者在Android系统中实施TapJacking修改系统安全设置(2010年12月)

6 Click Jacking防御

6.1 frame busting

通过一段JS代码禁止iframe嵌套。

if(top.location != location){
	top.location = self.location;
}

常见的frame busting方式见红宝书P136

但是由于他本身是JS代码,控制能力不是很强,有很多绕过的方法。

6.2 X-Frame-Option

相对更好的一种解决方案,使用一个HTTP头——X-Frame-Option。它有三个值可以选:

  • DENY 浏览器会拒绝当前页面加载任何frame页面
  • SAMEORIGION frame页面地址只能为同源域名下的页面
  • ALLOW-FORM origin 可以加载frame

除此之外,还有firefox的“Content Security Policy”和NoScript扩展也能防御ClickJacking。

7 小结

相比于XSS和CSRF,点击劫持需要诱导用户进行交互,成本更高,所以相对少见一点,但仍然有可能被用作钓鱼欺诈广告作弊等方面。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值