什么是点击劫持?说说“点击劫持”那些事儿

01

何为点击劫持

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

为了形象点理解ClickJacking
来举个例子展开说说吧

我们先访问站点,页面如图所示。一般而言,网站中的按钮用于提交表单信息,与后端数据库进行交互。在这里没有配置任何功能,它只是个平平无奇的button(甚至样式都没有正经设置),所以不应有任何反馈信息。我们尝试点击一下页面的button按钮。

 

此时页面却产生了交互
跳转到了其他站点上
问题来了
是什么原因导致的呢?

首先附上源码,仅短短几行的功能控制。其中width、height用于控制iframe的长、宽,top与left值可用于定位iframe在页面中的位置,将z-index值设为最大使iframe处于页面最上层,通过设置opacity值控制页面透明度。图中的透明度为0,显然是隐藏了些什么,我们将opacity设置为0.5的半透明状态后重新运行页面。

如图可以看到在button上隐藏了一个网页,并且button的位置恰好处于网页的一条超链接上,此时若点击按钮势必会产生跳转,这样,就完成了一次点击劫持的攻击。

点击劫持攻击与CSRF(Cross-site request forgery,跨站请求伪造)攻击有异曲同工之妙,都是在用户不知情的情况下诱使用户完成一些动作。但是在CSRF攻击过程中,如果出现用户交互的页面,则攻击可能无法顺利完成。与之相反的是,点击劫持没有这个顾虑,它利用的就是与用户产生交互的页面。

02、点击劫持案例

点击劫持攻击有多种途径,包括Flash点击劫持、图片覆盖攻击、拖拽劫持与数据窃取、ClickJacking 3.0:触屏劫持,这些都是曾发生过的较为严重的ClickJacking攻击案例类型。

在网页中进行拖拽动作相信大多数人都是尝试过的,那说说“拖拽劫持与数据窃取”叭。目前很多浏览器都开始支持Drag&Drop的API。对于用户侧而言,拖拽使我们的操作更加简单。浏览器中的拖拽对象可以是一个链接,也可以是一段文字,还可以从一个窗口拖拽到另一个窗口。

“拖拽劫持”的思路是诱使用户从不可见的iframe中“拖拽”出攻击者希望得到的数据,然后放到攻击者能控制的另外一个页面中,从而窃取数据。国内的安全研究者xisigr曾经构造了一个针对Gmail的漏洞复现实验,这里我复刻了下页面大概是长这样的:

这是一个网页小游戏,在小球和海豹的头顶上都有隐藏的iframe。当用户拖拽小球时,实际上是选中了隐藏的iframe里的数据,在放下小球时,数据也被放在了隐藏的textarea中,从而完成一次数据窃取的过程。

案例

03

ClickJacking防御

相对于XSS与CSRF而言,ClickJacking需要诱使用户与页面产生交互行为,实施攻击的成本更高,在网络犯罪中较为少见。但ClickJacking在未来仍然有可能被攻击者利用在钓鱼、欺诈和广告作弊等方面,不可不察。

作为终端用户,对ClickJacking攻击可谓是防不胜防,那么就只能从开发层面着手,针对传统的ClickJacking,一般是通过禁止跨域的iframe来防范。

1、frame busting

通常可以写一段JavaScript代码以禁止iframe的嵌套。这种方法叫做frame busting

常见的frame busting有以下方式(仅列举部分,感兴趣的朋友可自行百度吼):

if(top != self)

if(top.location != self.location)

if(top.location != location)

if(parent.frames.length > 0)

if(window != top)

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

if(window.self!=window.top)

if(parent &&parent!-window)

但是frame busting也存在一些缺陷。由于采用JavaScript编写,控制能力并不是很强,仍有许多方法可以绕过。

 

2X-Frame-Options

针对ClickJacking,一个更好的方案是使用HTTP头——X-Frame-Options,当前的主流浏览器都支持X-Frame-Options,其包含三个可选值,分别是DENYSAMEORIGINALLOW_FROME

当值为DENY时,浏览器会拒绝当前页面加载任何frame页面;若值为SAMEORIGIN,则frame页面的地址只能为同源域名下的页面;若值为ALLOW-FROM,则可以定义允许frame加载的页面地址。

除了X_FRAME-Options之外,FireFox的“Content Security Policy”以及FireFox的NoScript扩展也能够有效防御ClickJacking。

文章内容转自观初科技,侵删 

原创文章,作者:速盾高防cdn,如若转载,请注明出处:https://www.sudun.com/ask/76629.html

(0)
速盾高防cdn's avatar速盾高防cdn
上一篇 2024年5月22日 上午11:44
下一篇 2024年5月22日 上午11:47

相关推荐

发表回复

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