首页
社区
课程
招聘
我是如何在谷歌协作社区(GWC)中发现反射型、存储型、DOM型漏洞的?
发表于: 2016-3-2 10:20 1297

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

2016-3-2 10:20
1297
新闻链接:http://www.freebuf.com/vuls/97463.html
新闻时间:2016-03-02
新闻正文:

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

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



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



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



如上图,在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。



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



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



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

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

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



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


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

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//