CVE漏洞中文网

0DayBank一个专门收集整理全球互联网漏洞的公开发布网站
  1. 首页
  2. 百科
  3. 正文

hijack

2017年5月21日 1999点热度 0人点赞 0条评论
  • 首页
  • 分类阅读
  • 文库
  • 专栏
  • 公开课
  • 商城
  • 漏洞盒子
注册 | 登录
投稿

Hijack攻击揭秘

lanlan2014-01-10+8共171872人围观 ,发现 9 个不明物体WEB安全

概述

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中的段标识符解决。

Operation

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

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

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

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

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

Testing Clickjacking Vulnerability in Websites

下面我们看看如何来挖掘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

Mitigation(防护策略)

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

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

Client Side Mitigations(客户端防护)

NoScript plugin

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

GuardedID

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

Server Side Mitigations(服务端防护)

Frame Busting

Frame Busting是一种在服务器端插入JS脚本来阻止浏览器嵌套加载Iframe的安全机制。如今Frame Busting依旧是一种很流行的防御hijack的姿势,斯坦福大学和卡内基梅隆大学的几位研究者在最易受到hijack攻击的前500名网站中统计了Frame Busting语句的使用频率。

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

i f ( top . l o c a t i o n != l o c a t i o n )
top . l o c a t i o n = s e l f . l o c a t i o n ;

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

判断语句使用情况

Unique sites conditional statement
38% if (top != self)
22.5% if (top.location != self.location)
13.5% if (top.location != location)
8% if (parent.frames.length > 0)
5.5% if (window != top)
5.5% if (window.top !== window.self)
2% if (window.self != window.top)
2% if (parent && parent != window)
2% if (parent && parent.frames && parent.frames.length>0)
2% if((self.parent&&!(self.parent===self))&&(self.parent.frames.length!=0))

赋值语句使用情况

Unique sites counter-action
7 7 top.location = self.location
4 4 top.location.href = document.location.href
3 3 top.location.href = self.location.href
3 3 top.location.replace(self.location)
2 2 top.location.href = window.location.href
2 2 top.location.replace(document.location)
2 2 top.location.href = window.location.href
2 2 top.location.href = “URL”
2 2 document.write(”)
2 2 top.location = location
2 2 top.location.replace(document.location)
2 2 top.location.replace(‘URL’)
1 1 top.location.href = document.location
1 1 top.location.replace(window.location.href)
1 1 top.location.href = location.href
1 1 self.parent.location = document.location
1 1 parent.location.href = self.document.location
1 1 top.location.href = self.location
1 1 top.location = window.location
1 1 top.location.replace(window.location.pathname)
1 1 window.top.location = window.self.location
1 1 setTimeout(function(){document.body.innerHTML=”;},1);
1 1 window.self.onload = function(evt){document.body.innerHTML=”;}
1 1 var url = window.location.href; top.location.replace(url)

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

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

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

    <iframe security="restricted"
    src="http://javascript.info/files/tutorial/window/changetop.html"
    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

References

  • http://en.wikipedia.org/wiki/Clickjacking
  • https://www.owasp.org/index.php/Clickjacking
  • https://www.owasp.org/index.php/Clickjacking_Defense_Cheat_Sheet
  • http://www.sectheory.com/clickjacking.htm
  • http://iseclab.org/papers/asiaccs122-balduzzi.pdf
  • http://www.troyhunt.com/2013/05/clickjack-attack-hidden-threat-right-in.html
  • http://javascript.info/tutorial/clickjacking
  • http://www.contextis.co.uk/files/Context-Clickjacking_white_paper.pdf
  • http://seclab.stanford.edu/websec/framebusting/framebust.pdf
  • http://www.youtube.com/watch?v=t8atxi2l69k

[原文地址,译/FreeBuf实习小编wyl]

lanlan

lanlan41 篇文章等级: 6级
|
|
  • 上一篇:Java编写敏感文件扫描工具
  • 下一篇:浅谈webshell检测方法
发表评论

已有 9 条评论

  • mmtt (4级) 2014-01-10回复1楼

    果然又是不明觉厉啊

    亮了(4)
  • x0r16 2014-01-10回复2楼

    它通常使用一个ifream覆盖掉当前页面

    亮了(5)
  • V 2014-01-10回复3楼

    cs才是王道。

    亮了(0)
  • 月球上的巫师 2014-01-10回复4楼

    不早就有了么?

    亮了(0)
  • chchpd 2014-01-10回复5楼

    转发微博

    亮了(0)
  • 青山医院研究员 2014-01-10回复6楼

    转发微博

    亮了(0)
  • 金文丰的宝宝 2014-01-10回复7楼

    转发微博

    亮了(0)
  • BLUES--ET 2014-01-11回复8楼

    转发微博

    亮了(0)
  • 千云の轩 (1级) 2016-09-02回复9楼

    您好,今日拜读了您有关Hijack的帖子,收益良多。
    不过当中有一段话我个人觉得可能描述有误,特向你请教。
    文章:http://www.freebuf.com/articles/web/22999.html中有一段内容写着
    X-Frame的主要功能就是告知浏览器是否可以使用iFrame来解析页面。通过其有这一选项,管理员可以轻易地阻止第三方iframe的插入,因此这个方法可以抵御所有的基于frame的攻击。
    X-Frame-Options是表示该系统是否允许被嵌入到其它系统去,而不是阻止第三方iframe的插入。
    参考资料

    https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options

    http://javascript.info/tutorial/clickjacking

    http://www.enhanceie.com/test/clickjack/

    https://tools.ietf.org/html/rfc7034

    亮了(0)

必须您当前尚未登录。登陆?注册

必须(保密)

表情插图

取消

lanlan

lanlan

阿里巴巴安全工程师

41 篇文章14 条评论

相关阅读

  • 通过DragJacking获取用户隐私数据
  • 支持拖放的“点击劫持漏洞”利用工具:CJExploiter
  • 澳大利亚大量Apple设备被黑客锁定并索要赎金
  • Flash跨域数据劫持漏洞,一大波网站受影响
  • Facebook存在中间人攻击隐患

特别推荐

关注我们 分享每日精选文章

不容错过

  • 漏洞盒子魔兽英雄传 | 6月12日,等你来战!漏洞盒子2016-06-07
  • Splunk+蜜罐+防火墙=简易WAFRipZ2016-12-05
  • 亲历2015首届安全领袖峰会CSS:One World, One Dream明明知道2015-11-05
  • 如何安全的存储用户的密码litdg2014-03-13

FREEBUF

  • 免责声明
  • 关于我们
  • 加入我们

广告及服务

  • 寻求报道
  • 广告合作
  • 联系我们
  • 友情链接

关注我们

  • 官方微信
  • 新浪微博
  • 腾讯微博
  • Twitter

赞助商

Copyright © 2013 WWW.FREEBUF.COM All Rights Reserved 沪ICP备13033796号

css.php

正在加载中...

0day

标签: 暂无
最后更新:2017年5月21日

小助手

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论

COPYRIGHT © 2024 www.pdr.cn CVE漏洞中文网. ALL RIGHTS RESERVED.

鲁ICP备2022031030号

联系邮箱:wpbgssyubnmsxxxkkk@proton.me