【图解HTTP】服务器端请求伪造SSRF等相关概念
优采云 发布时间: 2021-08-01 06:13【图解HTTP】服务器端请求伪造SSRF等相关概念
简介:
昨天在搞google iframe的时候,接触到了点击劫持的概念。之前在看《Graphic HTTP》时也接触过这个概念【我大学的时候也接触过SQL注入、XSS、跨站脚本、跨站请求伪造(CSRF或XSRF)。服务器端请求伪造SSRF等相关概念]。今天查了相关资料,发现一个不错的文章,现转载如下:
点击劫持是一种相对常见的基于浏览器的攻击。 Facebook的“likejacking”诈骗攻击、Adobe Flash Player 网站vulnerabilityexploit、Twitter的Don't click Attack等都使用了Clickjacking技术。可见,点击劫持从未走远,它可能带来的安全问题不容小觑。
一、什么是点击劫持技术
点击劫持技术,也称为 UI 补救攻击,是一种视觉欺骗。攻击者使用一个或多个透明iframe覆盖一个普通网页,然后诱导用户对该网页进行操作。当用户在不知情的情况下点击透明 iframe 页面时,用户的操作已经被劫持到攻击者预先设计的恶意按钮或链接。攻击者可以通过点击劫持设计独立的恶意网站,进行钓鱼攻击等;或者结合XSS和CSRF攻击,突破传统防御手段,增加漏洞的破坏力。
二、Clickjacking 原理及实例
点击劫持漏洞(Clickjacking)是由网络安全专家Robert Hansen和Jeremiah Grossman在OWASP(Open Web Application Security Project)会议上提出的。现场还展示了该漏洞的危害。在第 14 届黑帽大会上,安全专家 Paul Stone 解释了 Clickjacking 的 Drag-and-Drop 技术,该技术使黑客的攻击方式更加灵活多变,同时突破了许多传统的安全防御措施。获取更多用户信息会增加点击劫持漏洞的危险。
攻击者在利用点击劫持漏洞的过程中,以iframe作为目标网页的载体。 iframe 是 HTML 标准中的一个标签。它可以创建一个收录另一个页面的内联框架。主要用于在点击劫持漏洞中加载目标网页。点击劫持的典型攻击原理*敏*感*词*如图1所示:
图1 点击劫持原理*敏*感*词*
攻击者进行攻击的一般步骤是:
黑客使用 iframe 创建一个收录目标 网站 的网页;
2)隐藏target网站,让用户检测不到target网站的存在;
3) 构造一个网页来诱使用户点击特定按钮(图 1 中的 PLAY! 按钮);用户在不知情的情况下点击按钮触发执行恶意网页的命令。 (一),点击劫持使用技术
比较重要的点击劫持漏洞利用技术包括目标网页隐藏、点击操作劫持和拖放技术。
1、目标页面隐藏技术
目标页面隐藏技术的原理是攻击者通过恶意网站上的iframe加载目标页面,然后隐藏目标页面,欺骗用户点击隐藏的恶意链接。目前,网页隐藏技术主要有两种:CSS隐藏技术和双iframe隐藏技术。
CSS隐藏技术的原理是利用CSS技术来控制网页内容的显示效果。 opacity 参数表示元素的透明度。取值范围为 0~1。默认值为 1 表示不透明度。当值为 0 时,该元素在网页中完全透明显示。当目标iframe的opacity属性设置为小于等于0.1时,用户看不到收录恶意代码的目标网页。
双 iframe 隐藏技术使用内联框架和外部框架。内嵌框架的主要功能是加载目标网页并将目标网页定位到特定的按钮或链接。外框的主要作用是过滤,只显示内嵌框内的特定按钮。
2、Click 操作劫持
成功隐藏目标网页后,攻击者的下一个目标是诱骗用户点击特定按钮。最简单实用的方法是使用社会工程学。例如,攻击按钮的外观设计成类似QQ消息提示按钮,诱导用户点击触发攻击。另一个想法是使用脚本代码和其他技术来增加用户点击特定按钮的概率。主要方法如JavaScript实现鼠标跟随技术、按钮劫持(Stroke jacking)技术等。
3、拖放技术
主流浏览器都有拖放式 API 接口,供网站 开发者创建交互式网页。但是这些API接口在设计时并没有考虑很多安全问题,导致通过拖拽实现跨域操作。使用拖放技术,攻击者可以突破现有的许多安全防御措施,
使用拖放技术,攻击者可以轻松地将文本注入目标网页。在实际实现过程中,攻击者欺骗用户选择输入框的内容来完成拖动操作。另一种方式是通过浏览器的API接口将iframe中的内容拖拽到目标网页的文本区域,攻击者可以获取用户网页中的敏感信息。
(二),点击劫持示例
以下是一个简单的点击劫持攻击示例:
攻击者构造恶意链接诱使用户访问。如果用户不小心打开了这个链接,用户会看到一个正常的页面。在这个例子中,一个简单的“点击这里!”制作完成,如图2所示:
图2 攻击者构建的恶意网页(不透明度值为0)
其实这个页面是由两个嵌套在一起的iframe组成,用户看到的就是一个普通的页面。其实从表面上看,是一个带有恶意链接的页面,点击这里按钮的操作也落到了这个恶意页面上。用户完全不知道整个过程。
攻击者是如何隐藏这个恶意页面的?这主要是通过在 CSS 中设置 div 元素的不透明度来实现的。在 CSS 中声明不透明度用于设置元素的透明度。现在主流浏览器都支持opacity属性,其值由浮点数和单位标识符组成,不能为负数。 Opacity 值为 1 的元素是完全不透明的,值为 0 时则是完全透明的,即对用户不可见。攻击者使用不透明度为 0 来隐藏此页面。
接下来,我们不妨把opacity的值改成0.5,也就是把surface iframe设为半透明,我们能看到攻击者想要隐藏的那部分内容吗?正如预期的那样,我们可以依稀看到攻击者隐藏的 iframe。如图3所示:
图3 攻击者构建的恶意网页(不透明度值为0.5)
可以看出,一个钓鱼网站实际上被覆盖在按钮上。不经意间,用户掉进了攻击者的陷阱,被劫持进了一个假购物网站。
三、点击劫持和其他漏洞的结合
如果将点击劫持技术与其他漏洞结合起来进行攻击,会突破一定的安全措施,实现更大范围的攻击。
(一),结合CSRF漏洞
CSRF(Cross-Site Request Forgery CSRF)是指跨站请求伪造漏洞。目前广泛使用的CSRF漏洞防御技术是token识别技术。令牌是网站分配给每个HTTP连接的随机数,用于标识不同的用户身份。对于网站开发者来说,最方便实用的方法就是将token以隐藏的形式存储在页面上,最后连同信息一起提交给服务器。服务器检查此参数以确定用户身份的真实性。因此,CSRF攻击成功实施的关键因素是正确获取token值。攻击者需要将目标网页加载的iframe中的token自动添加到src属性后面。使用HTTP“GET”方法的表单会自动完成以上步骤,实现对WEB应用的攻击。 Twitter蠕虫攻击就是利用点击劫持漏洞实现CSRF攻击。
(二),结合 XSS 漏洞
点击劫持和反射型 XSS(跨站点脚本漏洞)的组合变成了存储型 XSS 漏洞。反射型 XSS 漏洞最重要的特点是难以利用。通过点击劫持漏洞,反射型XSS可以转化为存储型XSS漏洞。只要用户点击触发该漏洞,就可以在用户的浏览器上执行任意JavaScript代码,危害极大。
四、click 劫持漏洞防御
点击劫持漏洞防御措施可以从服务器端防御和客户端防御两个方面考虑。服务器端防御主要涉及用户认证,客户端防御主要涉及浏览器安全。
(一),服务端防御
服务器端防御点击劫持漏洞的思路是结合浏览器的安全机制进行防御。主要防御方法介绍如下。
1、 X-FRAME-OPTIONS 机制
在微软新一代浏览器Internet Explorer8.0中,首次提出了一种新的安全机制:X-FRAME-OPTIONS。此机制有两个选项:DENY 和 SAMEORIGIN。 DENY 表示没有网页可以使用 iframe 加载此网页,SAMEORIGIN 表示符合同源策略的网页可以使用 iframe 加载此网页。如果浏览器使用了这种安全机制,当网站发现可疑行为时,会提示用户浏览网页存在安全隐患,建议用户在新窗口打开。这样,攻击者就无法通过 iframe 隐藏目标网页。
2、 使用 FrameBusting 代码
点击劫持攻击需要先将目标网站加载到恶意网站中,使用iframe加载网页是最有效的方法。 Web 安全研究人员为 iframe 功能提出了 Frame Busting 代码,并使用 JavaScript 脚本防止恶意网站 加载网页。如果检测到该网页被非法网页加载,则执行自动重定向功能。 Frame Busting 代码是防止网站 被攻击者恶意加载的有效方法。 网站 开发者使用 Frame Busting 代码来防止页面被非法加载。需要指出的情况是,如果在用户的浏览器中禁用了 JavaScript 脚本,FrameBusting 代码将无法正常工作。因此,这类代码只能提供部分保证功能。
3、 使用验证码验证用户
点击劫持漏洞通过伪造网站接口进行攻击。 网站开发者在确认是用户发送的点击命令后,可以通过认证码识别用户并进行相应的操作。识别用户的最有效方法是认证码认证。例如,在网站上广泛存在的发帖验证码要求用户在图形中输入字符并输入某些图形特征。
(二), 客户端防御
因为点击劫持攻击的代码是在客户端执行的,所以客户端有很多机制来防御这个漏洞。
1、升级浏览器
最新版本的浏览器提供了许多针对点击劫持漏洞的安全机制。对于普通网民来说,经常更新和修复浏览器安全漏洞最能有效防止恶意攻击。
2、 NoScript 扩展
对于 Firefox 用户来说,使用 NoScript 扩展可以在一定程度上检测和防止点击劫持攻击。在 NoScript 中使用 ClearClick 组件可以检测和警告潜在的点击劫持攻击,并自动检测页面中潜在的不安全页面。
五、结论
互联网行业的快速发展带来了越来越多的安全问题,同时也给用户数据和信息带来了巨大的威胁。随着社交网站和移动互联网的发展,点击劫持漏洞也将越来越受到关注。如果点击劫持漏洞与其他现有的Web漏洞结合使用,会造成更大的危害,这也是安全研究人员希望进一步研究该问题的必要条件。