通俗地理解OAuth2.0的授权码模式
0x0、理解完整流程
第一步:用户点击登录
第二步:用户根据第一步的指引访问第三方平台(统一登录中心)
第三步:验证用户名密码的准备
第四步:验证用户名密码
验证成功后的跳转指引(一般会有一个授权过程,需要用户点击确认才可以到达这里,但是在这个实例里面没有,需要注意!)
第五步:带着验证成功的身份信息请求code。
第六步:带着code去访问应用
第七步:通过code换token
0x1、可能的安全问题
- 第二步中,可能通过修改redirect_uri实现任意url跳转,从而实现token的窃取。client_id和redirect_uri都应该是在开发者平台注册的时候确定,并绑定关系的 。如果注册的时候就通过通配符来填充子域名,将可能造成这个问题
2010-11-03 WooYun: Sina 微博OAuth 提供者存在session fixation attack漏洞 2011-02-18 WooYun: 新浪微博应用URL跳转 2011-04-29 WooYun: 街旁网第三方登录劫持漏洞 2013-07-01 WooYun: 图虫网第三方认证缺陷导致可以劫持帐号 2013-07-23 WooYun: 团800oauth缺陷可能导用户帐号被劫持
- client_id(appkey)和client_secret(app secret)泄露
- 平台方提供的接口存在XSS
- 平台方授权页面的csrf
2012-02-15 WooYun: CSRF导致微博应用自动授权 2012-07-20 WooYun: 第三方APP强制新浪用户OAUTH授权漏洞 2012-12-03 WooYun: 网易开放平台第三方应用oauth强制用户授权漏洞
- 流程漏洞,可忽略前面步骤,类似密码重置逻辑漏洞,UID修改
2013-02-19 WooYun: 猪八戒网不用账号密码登录任意账号
2013-03-18 WooYun: 饭统网登录任意账户漏洞使用了Oauth后导致的跨应用登录问题(OAuth 2.0无绑定token问题)
- 通过一系列,登录授权后,获取到一个代表用户身份的code–access_token–或者UID. 如果能找到这个参数的规律,能进行修改或者替换,那么将导致任意用户登录。
WooYun: 金山快盘手机客户端任意进入他人快盘账号 金山快盘手机客户端任意进入他人快盘账号.pdf WooYun: 啪啪任意进入他人账号(OAuth 2.0无绑定token问题) 啪啪任意进入他人账号(OAuth 2.0无绑定token问题).pdf WooYun: 淘网址sina oauth认证登录漏洞 淘网址sina oauth认证登录漏洞.pdf
0x2、参考
https://github.com/bit4woo/code2sec.com/tree/master/refrence/OAuth2.0