Hangouts Chat聊天工具从任意跳转到代码执行漏洞

几个月前谷歌宣布了一个叫做Hangouts Chat的对标Slack的谈天对象。Hangouts既可以在浏览器用,也可以下载桌面版或者手机版。

我做了一些调研,抉择照样把重心放在桌面利用上。

Hangout Chat桌面版

安装完今后,我发明Hangouts的桌面版着实便是一个Electron桌面利用,便是把https://chat.google.com.web利用的web版嵌入一个桌面利用。

以是在Electron利用上测试安然问题就和web测试差不多了,两者最大年夜的差别是,web版本的利用在显示时会有一个地址栏,地址栏会奉告用户当前造访的网站是不是可以网站,这有几句Michał Zalewski 写的关于web的话:

从本色上来说,地址栏中的域名URL是web利用中最紧张的标识,用户可以很直不雅迅速的区分他们相信的网站和其他网站。

然而在Electron利用这种以浏览器为底层的利用中并没有地址栏,也便是说用户必须完全信托利用本身供给的是来自https://chat.google.com的办事,由于没有地址栏,就无法标识办事是官方的照样第三方的。

是以,我想我应该先在利用中找到一个可以跳转到外站的接口,这样就可以造成一个可托度对照高的钓鱼。用户会被进击者重定向到一个外部网站,可以制作一个和谷歌登录很相似的登录面板,由于没有地址栏,很难分辨登录框是假的。

探求重定向

以是我从最简单的地方开始,先找到一个可以重定向到其他域的地方,先试试在谈天内容中加一个外部域名,点击之后发明只是打开了默认浏览器。

恩,先不要放弃,颠末钻研,我发明假如链接是到chat.google.com官网的URL,在Electron利用中是直接打开的。别的,假如返回状态码不是200,当用户单击链接(例如:https://chat.google.com/webChannel/Events)时,必须从新启动利用法度榜样,由于没有“回退”按钮;)

一个绕过URL造访规则的常见措施是强制应用重定向,即把哀求的相应码手动改为3XX。我发明当导航到一个不存在的URL时(比如https://chat.google.com/test123),chat.google.com会被302重定向到https://chat.google.com/u/0/?hasBeenRedirected=true这个链接,以是我在Burp里自定义了一个调换规则,相应头中包孕hasBeenRedirected=true的URL,都调换为sekurak.pl 这个地址。

Hangouts相应如下:

神奇的工作发生了!这证清楚明了在Hangouts的桌面版利用谈天窗口中,可以使用302跳转到恣意外部网站。

现在万事俱备,只缺一个在chat.google.com网站上真实存在的随意率性重定向了。

随意率性重定向

在我看来,随意率性重定向大年夜部分环境下是一种被高估了的破绽,引用一下在Google的Bug Hunter University中的定义:

随意率性重定向是可以从Google链接跳转到由进击者构造的随意率性站点,一些安然论坛的成员觉得,随意率性重定向轻易被用来钓鱼,由于用户对照信托鼠标悬停时展示的地址栏地址,跳转发生后的链接每每不会被再次反省。

我也批准这种不雅点,用户一样平常来说只能根据地址栏判断安然指标。但这一点在Electron利用中就完全没用了,Electron利用是没有地址栏的,是以用户没法子确认正在造访的网站的真实性,在这种场景下这显然是个脆弱点。

在https://chat.google.com查找随意率性重定向破绽比我预想中要更轻易一些。我发明https://chat.google.com/accounts路径下的所有URL都邑跳转到accounts.google.com,比如https://chat.google.com/accounts/random-url这个,点击之后会跳转到https://accounts.google.com/random-url这个链接。

重定向到accounts.google.com只是第一步,但实际上更紧张的是在accounts.google.com有一个公开的重定向(twitter账号 @teh_h3ck) 。可以参考这篇博客文章中的细节,我基础确定可以重定向到我自己的域名,只必要在主机名后加上/_ah/conflogin的路径。

着末组合好的随意率性跳转链接如下:

https://chat.google.com/accounts/ServiceLogin?continue=https://appengine.google.com/_ah/conflogin?continue=http://bentkowski.info/&service=ah

然后我筹备了一个和谷歌登录基础一样的登录框,这便是一个让用户异常轻易中计的钓鱼页面了。

由于没有地址栏,用户不会知道这是一个假的登录页面,当然同样的环境在浏览器中就没有这样的效果了:

总结

Electron利用由于没有浏览器地址栏,很轻易激发由随意率性重定向造成的钓鱼问题,假如你要开拓一个Electron的利用,务需要确保在窗口中不能被重定向到外部站点。

假如你正在应用谷歌的Hangouts Chat谈天对象,务需要进级到最新版本,几天前官方已经宣布了新的补丁。

谷歌对这个bug也是很大年夜方,我终极拿到了$7500,主如果由于引起了代码履行。一开始我无法证实可以敕令履行,多亏了Matt Austin在推特中的一篇推文证清楚明了确凿可以代码履行,谢谢Matt!

后续更新:一开始的标题是“Hangouts Chat中的破绽也阐清楚明了Enectron利用使随意率性重定向问题再次爆发”,这激发了一些媒体的点击量,为避免争议以是照样改成了对照中立的标题。

赞(0) 打赏
分享到: 更多 (0)
免责申明:本站所有资料均来自于网络,版权归原创者所有!本站不提供任何保证,不保证真实性,并不承担任何法律责任

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

阿里云优惠网 更专业 更优惠

阿里云优惠券阿里云大礼包