17.2 OAuth2.0 漏洞总结
17.2.1 某社交网站 CSRF 漏洞导致绑定劫持
某社交网站-百度 OAuth 2.0 认证流程中,没有提供有效的方式来抵抗针对 redirect_uir 的 CSRF 攻击。如果攻击成功,攻击者不需要知道受害用户的账号和密码就可登录受害账
号。
某社交网站-百度
OAuth
2.0
认证流程中链接为
https://openapi.baidu.com/oauth/2.0/authorize?
response_type=code&client_id=foRRWjPq8In3SIhmKQw1Pep3&redirect_uri=http://www.xxxx.com/bind/baidu/baiduLoginCallBack。
某社交网站并没有加入 state 参数来抵抗针对 redirect_uir 的 CSRF 攻击。如果攻击者重新
发起一个某社交网站百度 OAuth
2.0 认证请求,并截获 OAuth
2.0 认证请求的返回:
http://www.xxxx.com/bind/baidu/baiduLoginCallBack?code=f056147c661d0b9
fbb6cd305567cb994。
攻击者诱骗已经登录的某社交网站用户单击立即绑定(比如通过邮件或者
QQ 等方
式),如图 17-2 所示,网站会自动将用户的账号同攻击者的账号绑定到一起,如图 17-3 所
示。
图 17-2 某社交网站-百度账号绑定
图 17-3 百度账号绑定成功
修复建议:OAuth 2.0 提供了 state 参数用于 CSRF 认证服务器将接收到的 state 参数按原
样返回给 redirect_uri,客户端收到该参数并验证与之前生成的值是否一致。除此方法外也
可使用传统的 CSRF 防御方案。
17.2.2 某社区劫持授权
以某社区账号登录“微博通”应用的授权页面为例,如图 17-4 所示。
图 17-4 授权页面
http://open.xxxx.cn/oauth/authorize.php?oauth_token=e65d28ab0862cbd517c67c3cc 6f2247e052ad9c22&oauth_callback=http%3A%2F%2Fm.wbto.cn%3A80%2F%3Fc%3D
m_setting%26m%3Dauth%26b%3Dcallback%26pid%3D24%26aid%3D%26wbto%3D16
58628_953c148f2d%26oauth_token%3De65d28ab0862cbd517c67c3cc6f2247e052ad9c22%26oauth_token_secret%3D2fde10390cd1a2477abaa3dcd44e4b99
其中,oauth_callback 没有与应用的 oauth_token 进行绑定,没有对可用性进行校验,可
以修改为任意地址。这里我们把 oauth_callback 的值改为 xxx.org,并没有提示 uri 非法。登
录并授权,跳转到了指定的地址,用户的 oauth_token 泄露,如图 17-5 所示。
图 17-5 跳转到 xxx.org
修复建议:请遵循 OAuth 协议规范,将应用的 oauth_token 与 oauth_callback 绑定,对
oauth_callback 进行有效性校验。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论