漏洞概要
关注数(24)
关注此漏洞
漏洞标题:微博上你点我链接我就上你绑定过的知乎账号
相关厂商:知乎
提交时间:2016-02-01 11:44
修复时间:2016-03-14 15:10
公开时间:2016-03-14 15:10
漏洞类型:设计缺陷/逻辑错误
危害等级:高
自评Rank:15
漏洞状态:厂商已经确认
Tags标签:
无
漏洞详情
披露状态:
2016-02-01: 细节已通知厂商并且等待厂商处理中
2016-02-01: 厂商已经确认,细节仅向厂商公开
2016-02-11: 细节向核心白帽子及相关领域专家公开
2016-02-21: 细节向普通白帽子公开
2016-03-02: 细节向实习白帽子公开
2016-03-14: 细节向公众公开
简要描述:
先无耻得打个高分,不同于 @呆子不开口 的一个思路
详细说明:
这个问题其实是由一个任意跳转的漏洞引起的,之前我上报过但没有审核通过。因为的确当时我还没能展示出其危害,然后我又回来了!!知乎上回答里随意插个链接都能看到如下的URL:
因为要从referrer里偷信息,在构造链接的时候我们要用http,刚好这个接口也是支持的。课外知识:关于https -> http 跳转的referrer,http://serverfault.com/questions/520244/referer-is-passed-from-https-to-http-in-some-cases-how
在知道这个跳转漏洞之后,我想起了第三方账号的oauth过程中有一个redirect_uri的参数,例如微博的接口:
这个接口文档:http://open.weibo.com/wiki/Oauth2/authorize
试了一下,参数当然只能是知乎的域名,不过,居然子域名也是没有问题的。(微信的接口就不行),所以问题就变得简单了,构造URL如下:
用户点击之后我们就可以在referrer拿到code,如下:
拿到这个code参数之后,在浏览器用下面的接口就可以完成登录了。
其中state参数的值是知乎首页的cookie中_xsrf对应的值
这个值不对的话会403
漏洞证明:
修复方案:
那个任意跳转的问题的确挺修复的,不知道微博redirect_uri那里能不能限制的严格一下。
漏洞回应
厂商回应:
危害等级:中
漏洞Rank:8
确认时间:2016-02-01 13:11
厂商回复:
多谢,已经确认了
最新状态:
暂无
漏洞评价:
评价
-
2016-02-01 11:45 |
an0nym0u5 ( 普通白帽子 | Rank:322 漏洞数:51 )
-
2016-02-01 12:39 |
我叫金挖挖 ( 路人 | Rank:13 漏洞数:4 | 一个搞电力的业余玩家)
-
2016-02-28 23:55 |
phith0n ( 普通白帽子 | Rank:778 漏洞数:122 | 一个想当文人的黑客~)
『其中state参数的值是知乎首页的cookie中_xsrf对应的值』这个state值如何获取?
-
2016-02-29 13:50 |
zhchbin ( 普通白帽子 | Rank:115 漏洞数:25 | 要走得再远一些!|但行好事,不问前程)
@phith0n 就是截图中红色的那个值啊。这个登录的时候手工copy出来就行,现在这个已经修复了,复现不了。(我还没去研究修复方式能不能绕过。
-
2016-02-29 14:02 |
phith0n ( 普通白帽子 | Rank:778 漏洞数:122 | 一个想当文人的黑客~)
@zhchbin 哪一步复现不了了?我怎么测试还是可以拿到code?
-
2016-02-29 15:51 |
zhchbin ( 普通白帽子 | Rank:115 漏洞数:25 | 要走得再远一些!|但行好事,不问前程)
@phith0n 我试过,他们并没有修复那个任意调整的问题,估计是其他方式。那个code现在依旧可以拿到,但拿到code之后直接在浏览器打开:https://www.zhihu.com/oauth/callback/login/sina?state=<_xsrf>&code=<code>会登录不了,这一步之前是可以的,现在不行了。我初步怀疑是用referrer验证,如果是的话,那估计他们还是没有看清楚这个问题。
-
2016-02-29 21:35 |
zhchbin ( 普通白帽子 | Rank:115 漏洞数:25 | 要走得再远一些!|但行好事,不问前程)
@phith0n 知乎动作真快,赞。我们讨论着讨论着,现在就改好了。