你有没有听说过Google Issue Tracker? 可能不会,除非您是Google员工或最近报告Google工具中的错误的开发人员。 我也没有,直到我发现我的漏洞报告现在通过在那里打开一个新线程来处理,除了通常的电子邮件通知。
所以我立即开始尝试打破它。
那么这个网站究竟是什么? 根据文档,问题跟踪器(内部称为Buganizer系统)是Google内部使用的一种工具,用于在产品开发期间跟踪错误和功能请求。 它可在Google以外的地方使用,供需要与Google团队就特定项目协作的外部公众和合作伙伴用户使用。
换句话说,当某人遇到Google产品问题时,该问题就会发布在问题跟踪器中。 有道理,对吗? 作为外部用户,我们只能看到冰山一角:一小部分预先批准的类别,以及Google上的某个人明确添加了外部帐户(例如漏洞报告)的问题 。 但表面下有多少信息?
通过观察分配给最新公共线程的数字ID,我们可以轻松估计此工具在内部使用的次数。 Mountain View的工作时间每小时有大约2000-3000个问题 ,其中只有0.1%是公开的。 看起来像这个系统中的数据泄漏会产生相当大的影响。 让我们打破它!
尝试#1:获取Google员工帐户
我在发现问题跟踪器时注意到的第一件事是,通过将电子邮件发送到特殊地址参与讨论的能力如下所示:
buganizer-system + componentID + issueID @ google.com
(其中componentID是表示类别的数字, issueID是您正在响应的线程的唯一标识符)
这让我想起最近发现的一个名为Ticket Trick的发现,它允许黑客利用这种电子邮件系统渗透到组织的聊天系统中。 考虑到这是@ google.com的电子邮件地址,我尝试使用它注册Google的Slack团队,并且我得到的确认页看上去非常有前途:
唉,Slack没有收到任何电子邮件。
我能想到的下一个最好的事情是获得一个带有@ google.com主电子邮件地址的Google帐户,这将有助于我在Buganizer上获得一些额外的权限。 不应该允许从谷歌外部注册这样的帐户:
但是,我发现了一种绕过此过滤器的方法:如果我注册了任何其他虚假的电子邮件地址,但未能通过单击通过电子邮件收到的链接确认该帐户,我可以不受任何限制地更改我的电子邮件地址。 使用这种方法,我将新的Google帐户的电子邮件更改为buganizer-system+123123+67111111@google.com 。
不久之后,我在相应的问题页面上收到确认电子邮件作为消息:
太好了! 我点击确认链接,登录问题跟踪器,然后......
我被重定向到企业登录页面。 不,我的Google帐户凭据在那里不起作用。 游民。
尽管如此,这个账户在互联网上的其他地方给了我很多额外的好处,包括搭便车的能力(免费,也许?),所以它仍然是一个安全问题,为恶意用户打开了很多门。
接受: 11小时 | 赏金: 3,133.7美元 | 优先级: P1
尝试#2:获取有关内部通知的通知
另一个引起我注意的问题跟踪器功能,同时熟悉界面是明星项目的能力。 主题问题意味着您对正在讨论的问题感兴趣,并且您希望在有人添加评论时收到电子邮件通知。
我注意到这个功能的有趣之处在于在尝试在我无法访问的问题上使用它时明显缺乏错误。 访问控制规则似乎从未应用于此端点,因此我登录到了我的第二个帐户,并试图通过替换请求中的问题标识来为我的主帐户发布漏洞报告。 然后我看到这个消息,这意味着这个行动已经取得成功:
有1人已经为此问题出演过。
能够轻松窥探开放的Google漏洞吗? 我很快发布了关于这个问题的评论,看看我的虚构攻击者账户是否会得到通知。
但是,再一次,没有电子邮件出现过。
出于某种原因,我真的不记得了,我决定在这个上做一些进一步的测试。 因此,我得到了一个最近的问题ID,并且推导了一系列几千个ID,这些ID应该与数据库中的最新问题一致。 然后我全部出演。
在几分钟内,我的收件箱看起来像这样:
我打开收件箱的第一个想法是“大奖!”。
然而,仔细观察后,这些线索中没有什么特别有趣的事情发生。 显然,我只能窃听与翻译有关的对话,人们会讨论用不同语言传达短语含义的最佳方式。
我甚至考虑过几个小时没有报告,希望我能找到一种方法来提高严重程度。 最后,我意识到Google安全团队可能会对找到可能的数据透视方法和变体感兴趣,所以我发送了详细信息。
接受: 5小时 | 赏金: $ 5,000 | 优先级: P0
尝试#3:游戏结束
当您作为外部用户访问问题跟踪器时,其大部分功能都被剥离,从而使您拥有极其有限的权限。 如果您想查看Google员工所能做的所有酷炫工作,则可以在JavaScript文件中查找API端点。 其中一些功能被完全禁用,其他功能则完全隐藏在界面中。
在设计这个限制版本的系统时,有人很好地留下了一种方法,让我们将自己从CC列表中移除,以防我们对某个问题失去兴趣或不想再收到有关它的电子邮件。 这可以通过发送像这样的POST请求来实现:
POST / action / issues / bulk_edit HTTP / 1.1
{ “issueIds”: 67111111, 67111112 ] “行动”: { “字段名”: “CCS”, “值”:“test@example.com” “操作类型”:“删除” } ] }
但是,我注意到一些疏忽导致了一个巨大的问题:
- 不正确的访问控制:在尝试执行给定操作之前,没有明确检查当前用户是否实际访问
issueIds指定的问题。 - 静默失败 :如果您提供的电子邮件地址当前不在CC列表中,则端点将返回一条消息,指出已成功删除电子邮件。
- 作为回应的完整问题详细信息:如果在操作过程中没有发生错误,系统的另一部分假定用户具有适当的权限。 因此,有关给定问题ID的每个细节都将在HTTP响应主体中返回。
现在我可以通过替换issueIds的请求中的issueIds来查看数据库中每个问题的详细信息。 答对了!
我只尝试查看几个连续的ID,然后从一个不相关的帐户攻击我自己,以确认此问题的严重性。
是的,我可以查看有关漏洞报告的详细信息以及Buganizer上托管的所有其他信息。
更糟糕的是,我可以在单个请求中清除有关多张票的数据,因此实时监控所有内部活动可能不会触发任何限速器。
我立即将漏洞细节发送给Google,他们的安全团队在一小时后关闭了受影响的端点。 惊人的响应时间!
接受: 1小时 | 赏金: 7,500美元 | 优先级: P0
当我第一次开始寻找这种信息泄露时,我认为这将是Google臭虫的圣杯 ,因为它披露了有关其他每个bug的信息(例如,HackerOne为类似的东西支付至少10,000美元 )。
但是在找到它之后,我很快意识到这种影响会被最小化,因为所有危险的漏洞无论如何都会在一小时内抵消。
我对额外的现金感到非常满意,并期待在其他Google产品中发现错误。
https://medium.freecodecamp.org/messing-with-the-google-buganizer-system-for-15-600-in-bounties-58f86cc9f9a5
本文介绍了作者如何通过一系列技巧和漏洞发现,逐步深入探索Google的内部Buganizer系统,最终发现了多个安全问题并获得了总计15,600美元的赏金。
2万+

被折叠的 条评论
为什么被折叠?



