Hijack攻击揭秘

概述

Clickjacking是最近新兴的针对WEB前端的攻击手段。它通常使用一个ifream覆盖掉当前页面,欺骗用户点击iframe中的恶意内容。

Likejacking通常是针对社交网站的一种攻击手法,攻击者会欺骗用户去点击一个伪造的图标或按钮。如今攻击者已经研究出了大量的方法,来把官方的按钮模仿的惟妙惟肖。

Clickjacking技术首先是由Jeremiah Grossman 和 Robert Hanson在2008年提出的,而如今这种依附于JS的攻击手段,已经在各大支持Js语言的浏览器上肆虐了。

现在Clickjacking技术已经演变出了多个变种,依靠着类似于Facebook,Twitter这种大型社交网站进行传播,受到攻击的用户数量也进行着指数级的增长。或许当你发布状态时,已经不知情的被攻击者重定向到了其他恶意的页面。

常见的Clickjacking攻击手法

通过Flash打开受害者的摄像头或麦克风
诱使用户在不知情的情况下粉某人(- -!外国也流行刷粉啊)
控制用户分享恶意链接
诱使用户点击某链接 (点击查看,苍老师.avi)

Likejacking

这是一种在Facebook上被广泛利用的攻击手法,它诱使用户点击一个指向外部的链接。当然,如果攻击者为了盈利,这条链接可以是一条点击付费的广告链接。Google广告联盟是攻击者经常选择的盈利渠道。

Cursorjacking

就像他的名字一样,这是一种对鼠标的劫持。在这种攻击手法下,受害者的鼠标会偏移原有的位置。使受害者点到原本不想点的链接。这种攻击手法首次被Marcus Niemietz提出。

iFrames

我们先来科普一下,iFrame是一个在页面中内嵌页面的组件。设定长宽的语法如下。

<iframe src=”URL” width=”500″ height=”400″></iframe>

Clickjacking需要两个iFrame配合来做,底层的iFrame显示正常的页面,上层的iFrame最好小一点,包含想让用户点击的链接。攻击实现的前提是两个iFrame能够对准。

所以说如果页面滚动,或者页面自适应大小,导致两个iFrame发生错位,攻击就不能成功。这个问题可以通过读取URL中的段标识符解决。

具体实现

Clickjacking攻击是一种单纯依靠Js语言来控制Dom已到达欺骗,诱使用户目的的攻击手法。最简单的方法是,直接覆盖一层透明的,iframe在目标网站上,iframe中可以包含一个按钮或者链接。

现在我们通过一个实际的例子来解释,Clickjacking能给黑客们带来怎样的好处。比如说我的twitter账号需要1000个赞,而同时我有一个点击量还可以的wordpress站点。这时候我可以给我的wordpress装上一个劫持插件(节操何在),这样每一个在我wordpress网站上点击的用户,都会给我刷一个赞。

上图中你会看到like的按钮,黑客们可以把这个按钮调成透明。

(下图是得到一个like的炫耀贴)

希望上面这个例子能帮助各位更好地理解Clickjacking。

下面我们看看如何来挖掘Clickjacking这种漏洞。第一步我们要找把用户输入转化为iFrame输出的点。你可以上传(或者是被包含)一个如下的html文件,然后在页面中查找关键字。

<html>
<head></head>
<body>    
    Website is vulnerable to clickjacking!
    <iframe src="http://www.target.site" width="500" height="500"></iframe>
</body>
</html>

如果你找到Website is vulnerable to clickjacking那就说明,页面成功加载了你的iframe

防护策略

Clickjacking作为一种前端的的安全漏洞,如果不做较好的处理,会产生比较大的危害。防范这种攻击主要从服务端和客户端两个方面下手。

下面我们来看一下相关的细节。

客户端防护

NoScript plugin

这是一种简单的一种防御方法,就是在浏览器层面阻止js的运行。FireFox的Noscript插件就可以做到这一点。这个插件有一个选项可以使用户免于遭受clickjacking的攻击。实现原理是,这个插件阻止JS创建iframe。不过这个插件只能运行于firefox和基于其内核的浏览器。

GuardedID

GuardedID是一个用于保护用户免受包括clickijack在内的诸多攻击的商业软件。GuardedID不直接干扰浏览器的解析,只是把所用iframe强制设为可见。GuardedID只能在IE firefox浏览器下工作。

服务端防护

Frame Busting

Frame Busting是一种在服务器端插入JS脚本来阻止浏览器嵌套加载Iframe的安全机制。如今Frame Busting依旧是一种很流行的防御hijack的姿势。

一般情况下Frame Busting语句包含一个判断和一个赋值。一个简单的例子如下。

if ( top.location != location )
    top.location = self.location

判断语句用于检测iframe是否存在嵌套。

Frame Busting是一个防御hijack简单而有效的方法。只要在每个页面加一段短小精悍的JS代码,就可以把hacker拒之门外。

<script>if(top != window) {top.location = window.location}</script>

不过理想总是很丰满,现实总是很骨感,这种防御手段还是很容易就会被绕过的。比如IE会提供一个叫做‘restricted’的元素,可以在iframe中禁止JS。

<iframe security="restricted" src="  style="height:80px"></iframe>

X-Frame Options

另外一种,在服务端防御hijack的方法是HTTP头中的X-Frame Options。这个设置是微软为了对抗基于frame的攻击而设计的。同样也是一种防御XSS的有效手段。X-Frame Options有如下几个选项。

DENY  阻止任何frame的加载(推荐)
SAMEORIGIN 只允许frame加载当前域内容
ALLOW-FROM url 允许指定url作为frame加载内容

X-Frame的主要功能就是告知浏览器是否可以使用iFrame来解析页面。通过其有这一选项,管理员可以轻易地阻止第三方iframe的插入,因此这个方法可以抵御所有的基于frame的攻击。这个特性也基本被所有主流浏览器所支持,不过Allow-From作为一个新的选项还没有被普遍接受,在一些不支持他的浏览器上使用,会使用户陷入风险。

下面的表列举了支持x-frame选项的浏览器,X-frame需要在服务端设置,一些硬件设施如本地流量管理器也可以对x-frame进行设置。

Browser

Chrome

FireFox

IE

Opera

Safari

Version

4.1.249.1042

3.6.9 (1.9.2.9)

8

10.5

4.0

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2014-01-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python中文社区

Python进行远程视频监控

專 欄 ❈小丸子,网络工程专业在读。希望通过将自己学到的知识分享出来可以发现自己某个知识的薄弱点,更加有利于学习,喜欢将自己所学到的知识运用在生活中。乐于分享...

50290
来自专栏Petrichor的专栏

csdn: 添加站内搜索框

CSDN博客 对我来说是一个很重要的 Online Notebook,我日常会把每天新学到的东西都记录下来以方便将来查阅。

26320
来自专栏FreeBuf

“同形异义字”钓鱼攻击,钉钉中招

技术交流:allen.lan#hotmail.com(# > @) 同形异义字钓鱼攻击号称“几乎无法检测”,是最狡猾的钓鱼攻击!这种攻击产生的原因是国际化域名...

33270
来自专栏腾讯NEXT学位

webpack 4 测试版 —— 现在让我们先一睹为快吧!

38150
来自专栏数据和云

无微不至:调整_lm_cache_res_cleanup解决Shared Pool 的4031问题

李真旭(Roger) 云和恩墨西北区技术总监 Oracle ACE, ACOUG 核心会员 前不久某客户的一套核心数据库(10.2.0.4.12),据说每间隔...

33870
来自专栏Android开发实战

腾讯最热门30款开源项目

开源是个好东西,马化腾除了王者荣耀还是干了些好事情的。腾讯最近开源的一些比较热门的项目,可以学习了解下哈

1.2K30
来自专栏FreeBuf

如何使用Airgeddon搭建基于软件的WIFI干扰器

Airgeddon是一款能够进行Wi-Fi干扰的多Bash网络审计工具,它可以允许你在未加入目标网络的情况下设置目标,并且断开目标网络中的所有设备。Airged...

381100
来自专栏编程软文

程序员常用软件,你用了哪些

30350
来自专栏北京马哥教育

干货:Web应用上线之前程序员应该了解的技术细节

问题 Web 应用上线前,程序员应考虑哪些技术细节呢? 如果 Jeff Atwood 忘记把 HttpOnly cookies、sitemaps 和 cros...

35950
来自专栏沈唁志

更换服务器遇到的破事

30940

扫码关注云+社区

领取腾讯云代金券