漏洞标题 你的QQ点啊/H5拿你的授权/微博oauth有点弱/解除你的微博 相关制造商 新浪微博 漏洞作者 不要说话 提交时间 2016-05-11 15: 37 公共时间 2016-06-25 17: 30 漏洞类型 设计缺陷/逻辑错误 危险等级 高 自我评估等级 20 漏洞状态 制造商已确认 标签标签 敏感接口缺乏验证,设计不当,逻辑错误 漏洞详细信息 您可以在QQ上订购,H5需要您的授权。微博oauth有点弱,你有权进入你的微博。这个洞从h5开始,到移动端结束。需要善意欺骗,有权接口。需要一些技巧,整套完成,感觉非常好.. 有一天,我帮助网友检查了一些信息,转向了微博的这个页面。 http://open.weibo.com/wiki/Weibo-JS_V2#JS_widget.E8.AF.B4.E6.98.8E.E5.8F.8A.E7.A4.BA.E4.BE.8B
你看一下这个页面的布局,以及颜色匹配,因为有一个微博LOGO。直觉告诉我这里可能有问题。 然后我在微博开放平台上看到了用于OAuth2.0的JS SDK。具体的URL地址是这样的。 http://tjs.sjs.sinajs.cn/open/api/js/wb.js?appkey=YOUR%20APPKEY&debug=true
分析这段代码你会得到这样一个地址,它应该用于jssdk授权登录 https://api.weibo.com/oauth2/authorize?client_id=3063806388& amp; transport=html5& scope=& response_type=token& display=js& referer=http://weibo.com 上面的client_id填写您已授权的微博应用程序,例如3063806388.这很容易在授权请求中翻转 如果您已经授权此应用程序,例如,如果再次访问此请求,您将收到以下退货。
上面的代码翻译成中文意味着存在漏洞 有问题的代码如下 Var message={'access_token':'2.00IxtkOBExxxxxxxxxxxxxxx4nutC','remind_in':'688841','expires_in': 688841,'uid':'1134179710'}; message=jsonToQuery(message); message=escape(message); window.opener.postMessage(message,'*');} 如果上述url的参数response_type更改为code,则返回授权码。 Var message={'code':'1ad1bf03000000000081b901a'}; message=jsonToQuery(message); message=escape(message); window.opener.postMessage(message,'*');} postMessage是一种跨h5域传输信息的机制。我不会介绍具体的技术。上面的代码表示如果你从页面A打开页面,那么页面会将消息信息传递给页面A.这种打开方式可以是指向标签的链接,也可以是window.open 漏洞的核心是postmessage的目标页面上没有白名单域名限制,参数中的referer参数没有校验和。 因此我们可以创建一个页面来窃取这个跨域传输的授权信息。
然后,当用户在登录状态下点击我的链接时,我可以在应用程序中获得用户的授权码或access_token,这具有以下两种风险。 获取用户的授权码,代表用户使用他的微博绑定本网站,然后我们就可以使用这个授权码登录网站,也就是说,我可以输入你的知识。使用方法非常简单,您只需要使用自己的微博来授权登录,然后将微博返回的代码更改为您偷走的其他人。 获取access_token,它可以用来发送微博,并且所有用户和微博都可以授予这个appkey权限,比如读写微博,发送评论。但是,您无法阅读私人消息或修改您的个人信息。有限的权力
但是,大多数浏览器机制不允许页面A在加载时自动打开该授权页面,除非它是一些旧的非标准IE。因此我们可能需要制作一个欺骗性的中间页面,要求用户点击,如下页,无论他在哪里点击页面,都会触发授权页面打开微博。
所以我在标题中说我需要用户点击它。 2,对 如果漏洞结束,那就是普通网民的行为。 我总觉得这不好玩,我还是希望看到用户的私信或更多权限做什么 我出去走路,一天过桥,看到一位算命的爷爷。我告诉他这件事,爷爷说,了解微博,你可以在朝阳区排名第八。 在我叔叔的鼓励下,我记得曾经寄过的微博。
也就是说,weico作为第三方应用程序,但具有超过官方api接口的各种权限。说明他有超能力,值得我们关注。 我猜那时会有一个伙伴api接口可以换成用户的身份认证信息,运气,我猜对了。 我帮助框架并找到了这样的界面。 http://api.weibo.cn/2/account/login?access_token=2.00IxtkOsdfsdfsdfsdf65fb27VVoD&source=7501641714&i= 此接口返回这样的数据,其中包含gsid
熟悉m-side页面相关漏洞的学生应该熟悉它。自古以来,Gsid一直是一个非常强大的东西,通常用于用户身份验证。 在weibo.cn和m.weibo.cn中,您可以在url中添加一个参数进行登录。
但不多了,因为跳转的页面不会再次传递gsid。 我想程序员会写这个,从整个请求中获取gsid。所以我将gsid放在cookie中,以用户身份访问整个站点很方便。
您也可以输入m.weibo.cn,它将进入用户的微博账号。
好了,现在,我们发送一个链接给Weico用户撒谎,你可以进入他的微博 作为了解第八位微博功能数量的人,以下是如何扩展��漏洞的功能。 微博的大多数用户都是移动用户,而不一定是Weico用户。因此上述攻击影响的用户很少。 我们的目标是所有用户都被招募到所有目的。 移动终端打开处于认证状态的微博域的链接。 但微博手机有问题,只有一个页面窗口,无法打开多个页面 因此,您可以先在页面中嵌入iframe,然后使用window.open打开iframe中的授权页面。提示,这里不要使用iframe中打开的链接,打开标签的方法,window.opener无法获取,所以postmessage无法通过 现在移动端支持它,然后如何让更多用户可以被我们攻击。 我只是想知道哪个应用程序是用户安装的。 事实证明,我的应用程序列表中有两个功能强大的应用程序,Android客户端和ios客户端。为什么他们说他们是傲慢的,因为我从来没有授权他们,应该是只要你用用户名和密码登录客户端,它就会被自动授权。 所以在上面的POC中,只要Android用户打开,我们就使用Android appkey,ios用户打开并使用ios appkey。 下一步是找到他们的appkey,这有点麻烦。他们不是一个网站,他们无法抓住他看到他的appkey。我在互联网上找不到任何泄密。 我想知道程序员是否会在此应用程序相关操作中使用appkey作为参数。 我帮助框架找到了一个。我直接在deauthorization函数中传递了appkey。 然后,正如预期的那样,它也是一个特权appkey,可以获取用户的gsid 这是完美的,基本上杀死所有用户,只是在私人信件或评论中发送他一个攻击链接。 我再想一想,攻击面可以扩大吗?例如,当此人不使用微博时,我会在其他地方向他发送链接,以便他可以招募。例如,在qq中打开它。链接 然后我想,我可以点击qq中的链接加载微博客户端,自动打开我们的poc链接。 寻找,微博支持url scheme,类似于sinaweibo: // 只需反编译下一个微博客户端,输入搜索浏览器,果然,有这样的网址 新浪微博: //浏览器/ 我报告尝试这种心态来访问这个,sinaweibo: //browser /?url=http://www.baidu.com 和以前一样顺利,它成功了 所以在qq中发送一个链接,例如http://sdadsadasdasd.com/302.php。这个请求将302跳转到sinaweibo: //browser /?url=http://www.shangmiandepocurl.com 我的qq嵌入式浏览器版本支持此方法。如果不支持,你可以尝试欺骗用户点击这样一个链接,sinaweibo: //browser /?url=http://www.shangmiandepocurl.com 当然,不仅qq,其他浏览器或嵌入式浏览器用于其他应用程序,其中许多支持打开这样的伪协议。攻击面可以更宽 几乎就在这里,送到堂兄,她在中间。 但在得知我不知道她的密码后,她改变了密码。 漏洞证明: 附上演示视频
修理计划: 在每个链接上将受信任的域列入白名单 版权声明:请注明出处,请不要打开@乌云