官方公众号企业安全新浪微博
FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。
FreeBuf+小程序
手机应用中的OAuth登陆安全测试(1)见:https://www.freebuf.com/vuls/262710.html
效果展示
鉴于本文写的太乱,实在怕有些同学因保护视力而不继续看下去,先放出通过后文描述的两种方法挖掘到的一小部分漏洞作为吸引。
本次要说的问题是,微博access_token校验不严格导致交互后劫持账号
这种问题存在于99%的应用内,这种利用方法,也只针对微博快捷登陆。这种问题的危害不如第一种明显,是一种需要交互进行的漏洞,随便提交了几家观察了一下厂商的反应,多数是中危,少数是高危,也有些厂商因为自己家有大量app存在该问题,打包提交,也能给出个高危的奖励。更多厂商的评级看各位的提交结果了~
当一个应用不存在第上一篇提到的问题的时候并不一定完全没了风险,通过微博的官方调试平台你看得出来每个微博api
请求只需要一个access_token
凭证就可以了,并不需要一些appid
或者uid
的信息。
其中有一些非常简单的请求,比如:
如果客户端获得了微博帐号的uid
和access_token
并进行了校验。但是如果只是通过这样类似的接口,通过access_token
请求得到uid
,然后就认为这个uid
是我们的用户了,这样是不正确的。
先看一下利用方法如下:
我在微博开发者自建了一个应用是这样的
Oauth2.0
授权回调页是攻击者的站点。
这里的快捷登陆链接就是:
https://api.weibo.com/oauth2/authorize?client_id=2xxx&response_type=code&redirect_uri=https%3A%2F%2Fwww.baidu.com%2f&state=30
登陆之后将会带着code进入百度(实际中是进入攻击者站点):
通过官方手册,code
是这样使用的:
此时攻击者获得了用户的access_token
和uid
回到第一种利用方法:
这一次将access_token
和uid
同时进行替换就可以登陆别人绑定的帐号。
原因在于没有通过这一次将access_token
和uid
同时进行替换就可以登陆别人绑定的帐号。
原因在于没有通过https://open.weibo.com/wiki/Oauth2/get_token_info
获取appkey
来校验这个access_token
是不是真是由你的应用产生的。
1.访问攻击者的微博快捷登陆
2.攻击者获取code
->获取access_token
和uid
3.其他的应用帐号被劫持
修复方法:
通过https://open.weibo.com/wiki/Oauth2/get_token_info
获取appkey
来校验这个access_token
是不是真是由你的应用产生的。
最后
在当今,不管国内国外,几乎每一个站点都存在第三方快捷登录,国内主流的可能就是QQ/微博/微信,当然还是有其他的快捷登录方式,希望本文能够抛砖引玉,让各位同学能够发现更多种的快捷登录方式漏洞。