G Suite Hangouts Chat IDOR漏洞分析与利用

本文详细分析了G Suite Hangouts Chat中存在的IDOR漏洞,通过替换webhook和chatroom ID可实现未授权删除、修改或添加任意聊天室的机器人webhook,涉及具体请求参数和利用方法。

G Suite Hangouts Chat 5k IDOR漏洞分析

大家好,

正如大多数人看到的,Google VRP(漏洞奖励计划)开始推行"每周一洞"活动。我提交的一个漏洞被选为本周展示案例,因此在此分享细节。

这是关于我在2018年3月发现的chat.google.com上的IDOR(不安全的直接对象引用)漏洞的详细分析。

漏洞发现过程

2018年3月,我在Twitter上注意到Google Chat成为热门话题。立即意识到这是谷歌推出的新产品,于是开始阅读相关帖子。经了解,这是面向G Suite客户的团队协作聊天室功能,用户可在其中互相发送消息。与大多数漏洞猎人一样,看到新产品上线就意味着测试时机的到来。

我随后设置了G Suite账户并访问chat.google.com。作为聊天区域,XSS(跨站脚本攻击)自然成为首要测试目标,但未发现相关问题(或许其他人找到了?)。

由于是新功能,我坚信存在漏洞,于是启动Burp Suite开始分析所有网络请求。

关键发现

经过一段时间分析,注意到聊天室用户可添加、删除和编辑机器人的webhook。这些webhook允许连接到聊天室的机器人发送消息,或在用户@机器人时读取消息。机器人实现细节可参考官方文档

以删除webhook为例,Burp Suite捕获的请求如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
POST /_/DynamiteWebUi/mutate?ds.extension=115617448&f.sid=-8125538407103612547&hl=en&soc-app=534&soc-platform=1&soc-device=1&_reqid=10551185&rt=c HTTP/1.1
Host: chat.google.com
Connection: close
Content-Length: 225
X-Same-Domain: 1
Origin: https://chat.google.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36
Content-Type: application/x-www-form-urlencoded;charset=UTF-8
X-Client-Data: CIm2yQEIprbJAQjEtskBCKmdygEI7Z7KAQioo8oB
Accept: */*
Referer: https://chat.google.com/
Accept-Encoding: gzip, deflate
Accept-Language: en,en-GB;q=0.9
Cookie: [详细Cookie数据]

f.req=%5B%22af.maf%22%2C%5B%5B%22af.add%22%2C115617448%2C%5B%7B%22115617448%22%3A%5B%5B%22space%2FAAAAbkEmhbA%22%2C%22AAAAbkEmhbA%22%2C2%5D%2C%22test3322xx%22%5D%7D%5D%5D%5D%5D&at=AJwI_LDFWIAMSGUjX3mVuYZZbn-n%3A1519845183375&

漏洞原理

在请求末尾的f.req参数中,可观察到两种ID:

  1. 115617448 - 机器人webhook的实际ID
  2. AAAAbkEmhbA - 聊天室ID

只需将ID替换为其他用户的webhook ID,即可实现未授权删除操作。整个webhook功能区域未正确验证用户操作权限。

因此,攻击者可:

  • 删除任意聊天室的webhook
  • 编辑现有webhook
  • 向任意聊天室添加恶意webhook并发送消息

总结

该IDOR漏洞源于权限验证缺失,通过简单ID替换即可实现越权操作。感谢阅读,如有疑问可通过页面顶部的Twitter联系我。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计