文章目录
1.Lab: Authentication bypass via OAuth implicit flow
2.Lab: Forced OAuth profile linking
1.Lab: Authentication bypass via OAuth implicit flow
通过 Burp 代理流量时,单击“我的帐户”并完成 OAuth 登录过程。之后,您将被重定向回博客网站。
点击我的账户,进入登入界面,输入账户:wiener密码:peter
打开bp,开启抓包
在 Burp 中,转到“代理”>“HTTP 历史记录”,研究组成 OAuth 流的请求和响应。这从授权请求开始GET /auth?client_id=[...]。
POST请注意,客户端应用程序(博客网站)从 OAuth 服务接收有关用户的一些基本信息。然后,它通过向自己的/authenticate端点发送包含此信息以及访问令牌的 请求 来让用户登录。
将请求发送POST /authenticate到 Burp Repeater。
在 Repeater 中,将电子邮件地址更改为carlos@carlos-montoya.net并发送请求。观察是否没有遇到错误。
右键单击请求POST并选择“浏览器中的请求”>“在原始会话中”。
复制此 URL 并在浏览器中访问它。
自动跳转界面,并且实验室已解决。
2.Lab: Forced OAuth profile linking
通过 Burp 代理流量时,单击“我的帐户”,进入一个普通的登录页面。
但请注意,有一个选项可以使用社交媒体个人资料登录,现在,只需使用表单直接登录博客网站即可。
Username:wiener
Password:peter
请注意,可以选择将的社交媒体资料附加到现有的帐户。
点击“附加社交资料”。
被重定向到社交媒体网站,使用社交媒体凭证登录以完成 OAuth 流程。
被重定向回博客网站。
退出,然后点击“我的账户”返回登录页面。
这次,选择“使用社交媒体登录”选项。
注意,您已通过新关联的社交媒体账户立即登录。
Continue跳转
在代理历史记录中,研究一系列用于附加社交资料的请求。
在GET /auth?client_id[...]
请求中,观察redirect_uri
到此功能的将授权代码发送到/oauth-linking,
重要的是,请注意请求不包含state
用于防止 CSRF 攻击的参数。
拦截了 的请求GET /oauth-linking?code=[...]
。
重新抓包,右键单击此请求并选择“复制 URL”,放弃请求,这一点很重要,以确保代码未被使用,因此仍然有效。
关闭代理拦截并退出博客网站。
转到漏洞利用服务器Go to exploit server
并创建一个iframe
,其中src
属性指向刚刚复制的 URL。
结果应该如下所示:
<iframe src="https://YOUR-LAB-ID.web-security-academy.net/oauth-linking?code=STOLEN-CODE"></iframe>
将漏洞传递给受害者-deliver exploit to victim
当他们的浏览器加载时iframe
,它将使用您的社交媒体个人资料完成 OAuth 流程,并将其附加到博客网站上的管理员帐户。
返回博客网站并再次选择“使用社交媒体登录”选项。
观察立即以管理员用户身份登录,转到管理面板并删除carlos
以解决实验室。