首页 运维 安全 利用CSRF令牌验证机制漏洞验证受害者账户

利用CSRF令牌验证机制漏洞验证受害者账户

Dec 28, 2019 pm 05:57 PM
csrf 漏洞 账户 验证

利用CSRF令牌验证机制漏洞验证受害者账户

本文分享的是一个Facebook CSRF漏洞,用Gmail或G-Suite账户来验证新创建Facebook账户时存在的CSRF令牌验证机制漏洞,攻击者利用该漏洞,可在验证新创建Facebook账户时,以最小用户交互方式用受害者邮箱验证其注册的Facebook账户,实现间接CSRF攻击。

OAuth登录机制对CSRF token验证不足

当用户用Gmail或G-Suite账号来创建一个新的Facebook账户时,存在以下两种身份验证机制:

1、从Gmail中接收5位数的验证码,然后在Facebook网页中输入以确认。

2、从Gmail或G-Suite账号的第三方进行OAuth授权跳转登录。

03230314a9cf47a8d0ea7509c92a1ac.png

要绕过第一种方法估计很难了,Facebook后端部署的Checkpoint安防设备和强大的速率限制条件,会毫不客气地阻断任何暴力破解和可疑行为。所以,我们来观察一下第二种方法,经过一番测试,我在其中发现了一个CSRF漏洞,原因在于,在OAuth授权跳转登录过程中缺少必要的CSRF令牌验证机制。

OAuth Login链接如下:

https://accounts.google.com/signin/oauth/identifier?client_id=15057814354-80cg059cn49j6kmhhkjam4b00on1gb2n.apps.googleusercontent.com&as=dOwxqXYIm0eQvYuxmp-ODA&destination=https%3A%2F%2Fwww.facebook.com&approval_state=!ChRLcHh5R0tQVzRXUWJSOFRIbG85ZRIfb19Dd1BsY0tpbGtYd0ktM2lWMU9TaWNIbzUyOTlCWQ%E2%88%99AJDr988AAAAAXghyvi5iRjgT2N1tdaquUxqUTQOYK4V4&oauthgdpr=1&xsrfsig=ChkAeAh8T8oLnsrNQd99XQIe69KD7-njhen9Eg5hcHByb3ZhbF9zdGF0ZRILZGVzdGluYXRpb24SBXNvYWN1Eg9vYXV0aHJpc2t5c2NvcGU&flowName=GeneralOAuthFlow
登录后复制

请注意,其中的state参数为一个CSRF令牌,该令牌用于在一些跨站点的请求响应中,去验证那些经身份验证过的用户,以此来防止攻击者蓄意的CSRF攻击。

通常来说,如果在上述OAuth Login过程中,该state参数由客户端的 Firefox 浏览器生成,那么,该参数令牌也仅限于在该Firefox浏览器中验证有效。但是,这里的问题是,该OAuth Login机制还缺乏必要的验证措施,也就是,这里的这个state参数(CSRF token)可用在任何其他客户端浏览器中实现有效验证。

所以,对攻击者来说,可以简单地把上述URL链接进行嵌入构造到一个网页中,只要受害者点击到该网页,攻击者就能以受害者身份(如注册邮箱victim_email@gmail.com)完成Facebook账户的身份验证,实现间接的CSRF攻击。

但是,这里还有一个问题,那就是受害者在点击攻击者构造的页面之前,攻击者Facebook账户需要在受害者浏览器中实现登录,而这里,刚好可用Facebook的一键式登录(Log In With One Click)来完成这个动作。

把以下Facebook的一键式登录链接嵌入到恶意网页的IFrame中,当受害者点击网页后,攻击者Facebook账户就可在受害者浏览器中完成登录加载。

https://www.facebook.com/recover/password/?u=100008421723582&n=232323&ars=one_click_login&fl=one_click_login&spc=1&ocl=1&sih=0
登录后复制


之后,当OAuth Login按钮被受害者点击后,受害者邮箱被攻击者用来确认登录了Facebook,之后,再用以下链接来退出攻击者的Facebook账户:

https://m.facebook.com/logout.php?h=17AfealsadvYomDS
登录后复制

结合以上方法构造出一个恶意页面,攻击者就能用受害者邮箱(如以下视频中的Gmail)完成新创建Facebook账户的验证了。

(需要视频嵌入)

https://www.youtube.com/watch?time_continue=8&v=SmRVIip_ySE
登录后复制

总结

总体来说,该漏洞危害确实有限,原因在于Facebook的第三方OAuth Login过程中缺乏对CSRF token的有效验证,导致攻击者可以利用不变的CSRF token来做文章。但随着Web应用的不断发展,各种场景下的第三方OAuth机制越来越多,其存在的问题和漏洞将会非常值得注意。

85f6c338abfb9ddaeff53233971ff18.png

漏洞上报进程

2019.5.10 :  漏洞初报
2019.5.17 :  Facebook跟进调查
2019.5.31 :  Facebook修复
2019.6.19 : Facebook奖励我$3,000
登录后复制

相关文章教程推荐:服务器安全教程

以上是利用CSRF令牌验证机制漏洞验证受害者账户的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何在PDF中验证签名 如何在PDF中验证签名 Feb 18, 2024 pm 05:33 PM

我们通常接收到政府或其他机构发送的PDF文件,有些文件带有数字签名。验证签名后,我们会看到SignatureValid消息和一个绿色勾号。如果签名未验证,会显示有效性未知。验证签名很重要,下面看看如何在PDF中进行验证。如何在PDF中验证签名验证PDF格式的签名使其更可信,文档更容易被接受。您可以通过以下方式验证PDF文档中的签名。在AdobeReader中打开PDF右键单击签名,然后选择显示签名属性单击显示签名者证书按钮从“信任”选项卡将签名添加到“受信任的证书”列表中单击验证签名以完成验证让

微信好友辅助验证进行解封的详细方法 微信好友辅助验证进行解封的详细方法 Mar 25, 2024 pm 01:26 PM

1、打开微信进入后,点击搜索图标,输入微信团队,点击下方的服务进入。2、进入后,点击左下方的自助工具的选项。3、点击后,在上方的选项内,点击解封/申诉辅助验证的选项。

如何使用正则表达式验证IFSC代码? 如何使用正则表达式验证IFSC代码? Aug 26, 2023 pm 10:17 PM

印度金融系统代码是缩写。参与电子资金转移系统的印度银行分支机构由一个特殊的11位字符代码进行标识。印度储备银行在互联网交易中使用此代码在银行之间转移资金。IFSC代码分为两个部分。银行由前四个字符进行标识,而分支机构由最后六个字符进行标识。NEFT(全国电子资金转移)、RTGS(实时毛额结算)和IMPS(即时支付服务)是一些需要IFSC代码的电子交易。Method使用正则表达式验证IFSC代码的一些常见方法有:检查长度是否正确。检查前四个字符。Checkthefifthcharacter.Che

Win10如何更改账户名称和头像-详细步骤指南 Win10如何更改账户名称和头像-详细步骤指南 Jan 14, 2024 pm 01:45 PM

注册了win10的账户之后,有很多的小伙伴觉得自己的头像都是默认的不是很好看,为此想要去改头像,下面就带来了更改头像的教程,想知道的可以来一起看看。win10账户名称怎么改头像:1、首先点击左下角开始。2、然后在弹出的菜单中点击上面的头像。3、进入之后点击“更改账户设置”。4、然后点击头像下面的“浏览”。5、找到自己想作为头像的照片进行选择。6、最后即可成功的修改完成。

Java中的缓冲区溢出漏洞及其危害 Java中的缓冲区溢出漏洞及其危害 Aug 09, 2023 pm 05:57 PM

Java中的缓冲区溢出漏洞及其危害缓冲区溢出是指当我们向一个缓冲区写入超过其容量的数据时,会导致数据溢出到其他内存区域。这种溢出行为常常被黑客利用,可以导致代码执行异常、系统崩溃等严重后果。本文将介绍Java中的缓冲区溢出漏洞及其危害,同时给出代码示例以帮助读者更好地理解。Java中广泛使用的缓冲区类有ByteBuffer、CharBuffer、ShortB

PHP 8 新特性:增加了验证和签名 PHP 8 新特性:增加了验证和签名 Mar 27, 2024 am 08:21 AM

PHP8是PHP的最新版本,为程序员带来了更多的便利和功能。这个版本特别关注安全性和性能,其中一个值得注意的新特性是增加了验证和签名功能。在本文中,我们将深入了解这些新的功能及其用途。验证和签名是计算机科学中非常重要的安全概念。它们通常用于确保传输的数据是完整和真实的。在处理在线交易和敏感信息时,验证和签名变得尤为重要,因为如果有人能够篡改数据,可能会对

20步内越狱任意大模型!更多'奶奶漏洞”全自动发现 20步内越狱任意大模型!更多'奶奶漏洞”全自动发现 Nov 05, 2023 pm 08:13 PM

不到一分钟、不超过20步,任意绕过安全限制,成功越狱大型模型!而且不必知道模型内部细节——只需要两个黑盒模型互动,就能让AI全自动攻陷AI,说出危险内容。听说曾经红极一时的“奶奶漏洞”已经被修复了:如今,面对“侦探漏洞”、“冒险家漏洞”和“作家漏洞”,人工智能应该采取何种应对策略呢?一波猛攻下来,GPT-4也遭不住,直接说出要给供水系统投毒只要……这样那样。关键这只是宾夕法尼亚大学研究团队晒出的一小波漏洞,而用上他们最新开发的算法,AI可以自动生成各种攻击提示。研究人员表示,这种方法相比于现有的

Laravel中的跨站脚本攻击(XSS)和跨站请求伪造(CSRF)防护 Laravel中的跨站脚本攻击(XSS)和跨站请求伪造(CSRF)防护 Aug 13, 2023 pm 04:43 PM

Laravel中的跨站脚本攻击(XSS)和跨站请求伪造(CSRF)防护随着互联网的发展,网络安全问题也变得越来越严峻。其中,跨站脚本攻击(Cross-SiteScripting,XSS)和跨站请求伪造(Cross-SiteRequestForgery,CSRF)是最为常见的攻击手段之一。Laravel作为一款流行的PHP开发框架,为用户提供了多种安全机

See all articles