第1页
利用OAuth劫持用户身份
新浪微博 移动&安全团队
@蓝色di雪球
第2页
Who I Am
新浪微博 移动&安全团队安全工程师
目前负责微博的应用安全&安全自动化平台架构&通行证
致力于研究应用安全,安全自动化和安全运维
第3页
OAuth的发展
第4页
OAuth是什么
方便,不需要维护用户名密码,成本低
引流
登录率
第5页
OAuth的应用
国内外使用广泛
第6页
OAuth的发展
第7页
OAuth调用方式
第8页
OAuth的四种调用方式
第9页
Authorization Code
第10页
10
Implicit
第11页
Authorization Code的请求参数
https://api.weibo.com/2/oauth2 /authorize?client_id=1166443256&response_type=token&display=js&transport=html5&referer=http://jssdk.sinaapp.com/widget/login-button.php
第12页
Implicit的请求参数
第13页
OAuth风险分析
第14页
OAuth风险分析
第15页
信息泄露
第16页
信息泄露
第17页
CSRF
第18页
CSRF
第19页
CSRF
第20页
权限认证(scope)
漏洞风险处标红
第21页
URL回调污染
redirect_uri 回调地址:
开放平台填写不严格
授权服务器不验证或者验证不严格
漏洞风险:
可能导致 code 或者 access_token 泄露或者钓鱼
第22页
不区分调用方式
改改
第23页
如何优雅的利用OAuth漏洞
第24页
如何优雅的利用OAuth漏洞
第25页
劫持用户应用方身份
----- 会议笔记(14-8-14 15:20) -----
加案例
第26页
劫持用户应用方身份
第27页
劫持用户应用方身份
第28页
劫持用户应用方身份
第29页
攻击过程
第30页
劫持用户授权方身份
第31页
劫持用户授权方身份
第32页
劫持用户授权方身份
篡改参数更改调用方式
Authorization Code
response_type = code
Code + Appsecret = access_token
Implicit
response_type = token
Request token = access_token
通过篡改参数绕过了Appsecret的限制,直接获得了access_token
图
第33页
劫持授权方身份
第34页
Access_token可能的利用方式
第35页
OAuth漏洞修复
第36页
OAuth漏洞修复
问题:
1.开放平台历史遗留
2.短时间内无法进行完全修复
BUG:
1.开放平台中 redirect_uri 不规范
2.redirect_uri 校验存在逻辑错误
3.不区分调用方式
无法确认请求方式的来源
第37页
OAuth漏洞修复
URL回调污染修复
日志分析,明确风险范围
校验全路径,暂不验证参数
至此,虽然漏洞没有完全修复,但是已经大大增加了漏洞的利用门槛,缩小了漏洞的范围
第38页
修复中的坑
还有很多种方式来进行绕过
redirect_uri=http://www.a.com%40passport.baidu.com
redirect_uri=http://www.a.com%3Fpassport.baidu.com
3.redirect_uri=http://www.a.com%5cpassport.baidu.com
4.redirect_uri=http://www.a.com:%5cpassport.baidu.com
5.redirect_uri=http://www.a.com\.passport.baidu.com
6.redirect_uri=http://www.a.com:\@passport.baidu.com
导致宣布修复以后还有问题
有台机器代码部署有问题
安全测试
第39页
Implicit的请求参数
第40页
OAuth漏洞修复
第41页
OAuth漏洞修复
最终修复方案
将大型应用添加进白名单,严格验证开放平台回调地址
非白名单进行全路径验证
运营和产品推动,规范白名单内应用的回调地址,改完移出白名单,直到白名单清空
第42页
OAuth可能存在的风险
第43页
OAuth可能存在的风险
第44页
授权滥用
利用方式:
诱惑用户授权恶意应用
使用access_token进行诈骗、广告
解决方案:
封禁上行权限
直接封禁应用
脉脉恶意抓取用户信息
第45页
授权token被脱裤
微博某大型第三方应用被脱裤,影响广泛
第46页
问题的根源
2015-8-19
OAuth存储凭证上没有做任何加密措施
用户名密码存储:md5(密码+salt)
Access_token存储:明文
第47页
感谢
@ 长得吸引仇恨
@ 罗诗尧v
@ 余弦
第48页
Q & A
第49页
招(gui)聘(qiu)
安全测试工程师(应用安全方向)
职位描述:
负责核心业务的应用安全测试与风险评估,推动落地安全解决方案
自动化安全检测工具与日志分析系统的研发与功能&性能优化
负责核心项目的白盒代码审计(PHP)
公司内部安全编码与培训(应用安全/移动安全)
跟踪安全社区的安全动态,并进行漏洞分析、挖掘和前沿安全攻防技术的研究
岗位要求:
熟悉常见的安全漏洞原理,如(SQLi,XSS,CSRF),能够独立挖掘web或移动客户端安全漏洞
熟练使用php/python/perl/shell脚本中的至少一种语言
熟悉主流PHP框架,对PHP代码安全审计有一定了解,并能独立进行白盒代码review
良好的沟通、协调能力
weibo_sec@staff.weibo.com
欢迎活泼开朗的小伙伴加入我们!
第50页