点击劫持漏洞Clickjacking(三)

一、点击劫持漏洞概述

  点击劫持也被称为UI-覆盖攻击,是一种视觉上的欺骗手段。攻击者使用一个或多个透明的 iframe 覆盖在一个正常的网页上,然后诱使用户在该网页上进行操作,当用户在不知情的情况下点击透明的 iframe 页面时,用户的操作已经被劫持到攻击者事先设计好的恶意按钮或链接上。攻击者既可以通过点击劫持设计一个独立的恶意网站,执行钓鱼攻击等。

二、点击劫持的分类

Flash点击劫持(Flash ClickJacking):劫持用户的鼠标点击操作。

拖放劫持(Drag & Drop Jacking):劫持用户鼠标拖放操作。

触屏劫持(TapJacking):触屏劫持是智能终端设备的一种劫持方式,劫持用户的触控操作。

三、点击劫持攻击步骤

  1.  攻击者设计一个网页,使用frame嵌套一个正常的网页(用户想要操作的网页);
  2. 攻击者在frame上层覆盖一个透明的层(用户肉眼看不到);
  3. 用户点击正常网页的按钮,其实是点击了透明的层的按钮或链接(触发了攻击者为编写的恶意代码)。

四、点击劫持的危害

  通常情况下点击劫持的底层页面和上层页面是指向不同的web应用程序,指向不同的域名地址,底层页面为肉眼可见但不可操作的页面、上层页面为透明不可见但可操作的页面。底层既可能是其它正常的页面也有可能是攻击者自己设计的页面,但都是用于欺骗用户的,上层才是透明的带有攻击者恶意按钮和链接的页面。

  点击劫持主要是视觉欺骗,拦截用户的点击事件,随着html5API的扩展,劫持已经扩展到触控、拖放操作上。在同源策略里,一个域的Cookie只能被本域所访问,但是拖放操作是不受同源策略限制的,因此劫持拖放操作可以获取到Cookie信息。

  点击劫持可以诱使你发布一条虚假微博、或者发送一封虚假邮件甚至盗取你的个人信息。

五、点击劫持的防御

  点击劫持漏洞防御措施可以从两个方面考虑:服务器端防御和客户端防御。服务器端防御主要涉及到用户身份验证,客户端防御主要涉及到浏览器的安全。

  服务端的防御主要使用 X-FRAME-OPTIONS 机制(配置在Nginx等服务器中)。该机制有三个选项:ALLOW-FROM、DENY 和 SAMEORIGIN。ALLOW-FROM 表示允许Freame嵌套的地址,DENY表示任何网页都不能使用 iframe 载入该网页,SAMEORIGIN表示符合同源策略的网页可以使用 iframe载入该网页。如果浏览器使用了这个安全机制,在网站发现可疑行为时,会提示用户正在浏览网页存在安全隐患,并建议用户在新窗口中打开。这样攻击者就无法通过 iframe 隐藏目标的网页。

  点击劫持攻击需要首先将目标网站载入到恶意网站中,使用 iframe 载入网页是最有效的方法。Web安全研究人员针对 iframe 特性提出 Frame Busting 代码,使用 JavaScript 脚本阻止恶意网站载入网页。如果检测到网页被非法网页载入,就执行自动跳转功能。Frame Busting代码是一种有效防御网站被攻击者恶意载入的方法,网站开发人员使用Frame Busting代码阻止页面被非法载入。需要指出的情况是,如果用户浏览器禁用JavaScript脚本,那么FrameBusting代码也无法正常运行。所以,该类代码只能提供部分保障功能。

  点击劫持漏洞通过伪造网站界面进行攻击,网站开发人员可以通过认证码识别用户,确定是用户发出的点击命令才执行相应操作。识别用户的方法中最有效的方法是认证码认证。例如,在网站上广泛存在的发帖认证码,要求用户输入图形中的字符,输入某些图形的特征等。

  最新版本的浏览器提供很多防御点击劫持漏洞的安全机制,对于普通的互联网用户,经常更新修复浏览器的安全漏洞,能够最有效的防止恶意攻击。

  综上所述,防御的手段如下:

  • X-FRAME-OPTIONS机制:DENY(禁止任何Frame嵌套)、SAMEORIGIN(符合同源策略的网页可以使用 iframe嵌套)、ALLOW-FROM(定义允许frame嵌套的地址);
  • Frame Busting 代码:通过可以写一段JavaScript代码,以禁止iframe的嵌套;
  • 使用认证码确认是否是用户点击:手动输入图形产生的认证码后才能提交;
  • 更新浏览器及其插件。
  • 使用CSP网页安全策略。
posted @ 2023-06-26 17:11  我若安好,便是晴天  阅读(282)  评论(0编辑  收藏  举报