点击劫持漏洞Clickjacking(三)
一、点击劫持漏洞概述
点击劫持也被称为UI-覆盖攻击,是一种视觉上的欺骗手段。攻击者使用一个或多个透明的 iframe 覆盖在一个正常的网页上,然后诱使用户在该网页上进行操作,当用户在不知情的情况下点击透明的 iframe 页面时,用户的操作已经被劫持到攻击者事先设计好的恶意按钮或链接上。攻击者既可以通过点击劫持设计一个独立的恶意网站,执行钓鱼攻击等。
二、点击劫持的分类
Flash点击劫持(Flash ClickJacking):劫持用户的鼠标点击操作。
拖放劫持(Drag & Drop Jacking):劫持用户鼠标拖放操作。
触屏劫持(TapJacking):触屏劫持是智能终端设备的一种劫持方式,劫持用户的触控操作。
三、点击劫持攻击步骤
- 攻击者设计一个网页,使用frame嵌套一个正常的网页(用户想要操作的网页);
- 攻击者在frame上层覆盖一个透明的层(用户肉眼看不到);
- 用户点击正常网页的按钮,其实是点击了透明的层的按钮或链接(触发了攻击者为编写的恶意代码)。
四、点击劫持的危害
通常情况下点击劫持的底层页面和上层页面是指向不同的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网页安全策略。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码