什么是点击劫持
点击劫持是一种视觉上的欺骗手段。攻击者一般使用一个透明的、不可见的iframe,覆盖在一个网页上,然后诱使用户在不知情的情况下点击透明的iframe页面。通过调整iframe页面的位置,可以诱使用户恰好点击iframe页面的一些功能性按钮上。
通过控制iframe的长、宽,以及调整top、left位置,可以把iframe页面内任意部分覆盖到任何地方。同时设置iframe的position为absolute,并将z-index的值设置为最大,以达到让iframe处于页面的最上层。最后,再通过设置opacity来控制iframe页面的透明程度,值为0是完全不可见。
在CSRF攻击中,如果出现用户需要交互的页面,攻击可能无法完成。但是,点击劫持没有这个问题,因为它利用的就是与用户产生交互的页面。
Flash点击劫持
曾经有一个ClickJacking攻击案例,攻击者可以通过Flash构造了点击劫持,在完成一系列复杂的动作后,最终控制了用户电脑的摄像头。
攻击者制作了一个Flash游戏,这个游戏就是让用户去点击“CLICK”按钮,每次点击后这个按钮的位置都会发生变化。在Flash上面隐藏了一个看不见的iframe,攻击通过诱导用户鼠标点击就能完成较复杂的动作。
图片覆盖攻击
图片覆盖也可以起到类似的点击劫持的作用。(XSIO,Cross Site Image Overlaying)
通过调整图片的style可以使图片覆盖的任意指定位置。
<img style="position: absolute; right: 320px; top: 90px">
如果应用没有限制style的position为absolute的话,图片可以覆盖到页面上的任意位置。
用户点击图片,如果链接到一个钓鱼网站,用户可能就上当了。
图片还可以伪装得像一个正常的链接、按钮;或者在图片中构造一些文字,覆盖在关键的位置,就有可能完全改变页面中想表达的意思。这种情况下,不需要用户点击,也能达到欺骗的目的。比如,修改图片中的联系电话。
由于img标签在很多站点都是对用户开放的,在防御XSIO时,需要检查用户提交的HTML代码中,img标签的style属性是否可能导致浮出。
拖拽劫持与数据窃取
目前很多浏览器都支持Drag & Drop的API。浏览器中的拖拽对象可以是一个链接,也可以是一段文字,还可以从一个窗口拖拽到另一个窗口,因此拖拽是不受同源策略限制的。
拖拽劫持的思路是诱使用户从隐藏的不可见iframe中拖拽出攻击者希望得到的数据,然后放到攻击者能控制的另外一个页面中,从而窃取数据。
ClickJacking3.0:触屏劫持
安全研究者称其为TapJacking。
从手机OS的角度来看,触屏实际上就是一个事件,手机OS捕捉这些事件,并执行相应的动作。
常见的几个事件:
touchstart: 手指触摸屏幕时发生
touchend: 手指离开屏幕时发生
touchmove: 手指滑动时发生
touchcancel: 系统可取消touch事件
将一个不可见的iframe覆盖到当前网页上,就可以劫持用户的触屏操作。
针对视觉效果的攻击可以被利用进行钓鱼和欺诈。
防御ClickJacking
针对传统的ClickJacking,一般是通过禁止跨域的iframe来防范。
frame busting
通过可以写一段JavaScript代码,以禁止iframe的嵌套。这种方法叫作frame busting。比如
if (top.location != location) {
top.location = self.location;
}
当然,还要很多很多frame busting的写法,这里就不一一罗列了。
frame busting有一些缺陷,由于它是用JavaScript写的,控制能力并不是特别强,因此有很多方法可以绕过它。此外像HTML5的sandbox属性、IE中iframe的security属性等,都可以限制iframe页面中的JavaScript脚本执行,从而使frame busting失效。
X-Frame-Options
X-Frame-Options可以说是为了解决ClickJacking而生的,它有三个可选的值:
DENY 拒绝当前页面加载任何frame页面
SAMEORIGIN frame页面的地址只能为同源域名下的页面
ALLOW-FROM origin 定义允许frame加载的页面地址
除了X-Frame-Options之外,Firefox的“Content Security Policy”以及Firefox的NoScript扩展也能有效防御ClickJacking。这些方案为我们提供了更多的选择。
小结
ClickJacking主要被利用在钓鱼、欺诈和广告作弊等方面。相对于XSS与CSRF来说,因为需要诱导用户与页面产生交互行为,因此实施攻击的成本更高,在网络犯罪中比较少见。
今天的文章web安全——点击劫持(ClickJacking)分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/21787.html