转载

我是如何在谷歌协作社区(GWC)中发现反射型、存储型、DOM型漏洞的?

我是如何在谷歌协作社区(GWC)中发现反射型、存储型、DOM型漏洞的?

Google Work Connect(GWC) 是一个由系统 应用管理员和合作伙伴组成的社区系统,也在谷歌的漏洞悬赏范围内。不久之前,我在 GWC 社区系统发现了反射型、存储型、 DOM 型的XSS  

存储型XSS

GWC社区系统中,不同应用的管理员间可以互相分享他们自己的观点。这个社区系统允许用户创建文档、文章、讨论/消息(还有其他的比如标记问题、标签)等,文章包含一个标题和一个正文,标题是我们最感兴趣的点,但是该系统会把 < 编码成HTML实体<

我是如何在谷歌协作社区(GWC)中发现反射型、存储型、DOM型漏洞的?

如上图, < 被编码成了 HTML 实体,所以在这个点上我们没办法利用了,不过通过 Google Drive 我们也能做同样的事情。在 Google Drive 上,有个“上传文件到 Google Drive ”的功能,上传的文件名会成为文章的标题。

我是如何在谷歌协作社区(GWC)中发现反射型、存储型、DOM型漏洞的?

如上图, 我在 Google Drive 上上传了 “xxxxxxxx’yyyyy</img>.PNG ,然后该文件名被放到了 script 标签的 title 中,但是 “  和  </ 并没有编码或者过滤,所以可以构造 xss

我是如何在谷歌协作社区(GWC)中发现反射型、存储型、DOM型漏洞的?

如上图,在 Google Drive 中上传一个名为  </script><script>confirm(document.domain)</script> 的文件,然后该文件名被嵌套进了 GWC 社区系统中,该 xss 为存储型 xss ,任何登录的用户看到该文章,都会触发该 xss

这个存储型 xss 形成的成因是 GWC 社区系统在引入其他应用的数据( Google Drive )时,没有对该数据进行控制 / 编码 / 过滤而直接使用,但是在他们各自的应用中,对于用户提交的数据是处理的很好的。

反射型XSS

如果你能触发错误(比如在 Google Drive 中文件没上传好), GWC 社区系统就会在 GET 请求 ”googleDriveError” 参数中抛出一个错误信息,这个参数能够构造反射型 xss 。还有如果你能构造一个认证错误,该错误信息也会被放置在 GET 请求的 “error” 参数中。如下图所示, GET 请求的  “googleDriveError” 参数中包含了我们无害的测试字符 “xxxxxxxx’yyyyy</img

我是如何在谷歌协作社区(GWC)中发现反射型、存储型、DOM型漏洞的?

在上图中,你还能看到 < 并没有被编码成 HTML 实体。

我是如何在谷歌协作社区(GWC)中发现反射型、存储型、DOM型漏洞的?

如上图,通过GET请求的 “googleDriveError” 参数来构造 xss

我是如何在谷歌协作社区(GWC)中发现反射型、存储型、DOM型漏洞的?

如上图, 通过GET请求的 “error” 参数来构造 xss

DOM型XSS

罪魁祸首是 window.location.hash.substring(1) ,但是这边有一个限制:只有当用户将文章标记为 “Mark as Helpful” 时才能触发该 xss 。有问题的 JavaScript 代码如下:

...&nbsp;{if(window.location.hash){c.scrollTo(&quot;a[name='&quot;+window.location.hash.substring(1)+&quot;']&quot;)}&nbsp;...

我是如何在谷歌协作社区(GWC)中发现反射型、存储型、DOM型漏洞的?

如上图,该文章没有被标记为 “Mark as Helpful” ,所以没有触发该 xss

我是如何在谷歌协作社区(GWC)中发现反射型、存储型、DOM型漏洞的?

如上图,文章被标记为 “Mark as Helpful” ,所以触发了该XSS

*原文地址: wald0 ,东二门陈冠希/编译,部分内容有修改,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)

原文  http://www.freebuf.com/vuls/97463.html
正文到此结束
Loading...