当您手上有太多时间并希望倾销Bumble的整个用户群并绕过付费付费的Premium Bumble Boost功能。
作为ISE Labs的一部分进入流行的约会应用程序(在这里查看更多),我们查看了Bumble的Web应用程序和API。继续阅读,因为我们将演示攻击者如何绕过支付某些Bumble Boost的高级功能。如果这似乎不够有趣,就会了解攻击者如何使用基本的用户信息和图片将Bumble的整个用户库转储,即使攻击者是具有锁定帐户的未验证用户。 SPOILER ALERT - Ghosting绝对是一件事。
更新 - 截至2020年11月1日,此博客中提到的所有攻击仍然有效。在2020年11月11日的下列问题重新调整后,部分问题已被部分减轻。 Bumble不再使用顺序用户ID,并且已更新其先前的加密方案。这意味着使用如此处所述的攻击,攻击者不能再转储Bumble的整个用户群。 API请求不再提供数英里以内的距离 - 所以通过三角测量的跟踪位置不再是使用此端点的数据响应的可能性。攻击者仍然可以使用端点获取诸如Facebook喜欢,图片和其他资格的其他配置文件信息之类的信息。这仍然适用于未经验证的,锁定的用户,因此攻击者可以使无限的假帐户转储用户数据。但是,攻击者只能为他们已经拥有的加密ID(为您附近的人提供)来执行此操作。大帝可能会在接下来的几天内解决这个问题。关于绕过Bumble的其他保费功能的攻击仍然有效。
开发人员使用REST API来指示应用程序的不同部分彼此通信,并且可以配置为允许客户端应用程序从内部服务器访问数据并执行操作。例如,通过对Bumble的API的请求进行高级功能和访问用户照片的用户,诸如刷新用户的操作,例如刷新用户和访问用户照片。
由于休息呼叫无状态,因此每个端点都很重要,以检查请求发行者是否被授权执行给定的操作。此外,即使客户端应用程序通常不会发送危险请求,攻击者也可以自动化和操作API调用以执行意外操作并检索未经授权的数据。这解释了一些潜在的漏洞,涉及过度数据暴露的Bumble的API和缺乏速率限制。
由于Bumble的API未公开记录,我们必须撤消他们的API调用来了解系统如何处理用户数据和客户端请求,特别是因为我们的最终目标是触发无意的数据泄漏。
通常,第一步将是拦截从讨论从Bumble移动应用程序发送的HTTP请求。但是,由于Bumble拥有Web应用程序并与移动应用程序共享相同的API方案,因此我们将通过Burp Suite拍摄简单的路由并拦截所有传入和传出请求。
Bumble“Boost”Premium Services每周花费9.99美元。我们将重点关注找到以下升压功能的解决方法:
无限的高级过滤 - 除了我们也很好奇关于所有Bumble的活跃用户,他们的兴趣,他们感兴趣的人,以及我们是否可以潜行他们的位置。
Bumble的移动应用程序限制您可以在白天使用的右滑动数(投票)。一旦用户击中他们的日常滑动限制(大约100右滑动),它们必须等待24小时以便重置并显示新的潜在匹配。通过server_encounters_vote用户操作使用以下请求处理投票,其中如果:
“投票”:2 - 用户在用户上播放了person_id
“投票”:3 - 用户已使用person_id向用户播放
在进一步检查中,唯一的刷新限制的检查是通过移动前端,这意味着没有对实际API请求进行检查。由于Web应用程序前端没有检查,使用Web应用程序而不是移动应用程序意味着用户不会耗尽。此特殊前端访问控制方法介绍了此博客中的其他磁解问题 - 服务器未选中多个API端点。
不小心赶上了某人?这不再是一个问题,你绝对不需要回溯来撤消你的左上方。为什么? server_encounters_vote用户操作不检查您之前是否已投票给某人。这意味着,如果您直接发送API投票请求,请更改“投票”:3参数到“投票”:2您可以在您选择的用户上“滑动”。这也意味着用户不必从6个月前担心错过的连接,因为API逻辑不会执行任何时间检查。
Beeline是Bumble Boost的主要特征之一,因为它允许用户查看所有在它们上刷新的人。
当我们使用Developer控制台研究网络流量时,我们发现了一个server_get_encounters端点,以潜在的匹配源显示所有用户。有趣的是要注意的,它还会展示他们的投票,我们可以使用它来区分那些没有投票与已经右键的用户的用户。
这种寻找崇拜者的方法的唯一问题是,如果开发人员决定修复这种自动投票披露,我们将丢失和孤独。我们的下一步是尝试弄清楚端点如何在其响应中具有投票值,以便我们可以为其他请求重新创建此行为。希望通过研究下面的原始请求,我们将能够完成此操作。
关于此请求的最有趣的事情是User_Field_Filter投影字段中的各种数字。现在,我们的目标是弄清楚这些数字的意思。
即使在我们开始拦截Bumble的请求之前,我们也会发现使用Developer控制台探索Web应用程序的Bumble-Service-Worker.js文件。
服务工作人员是活动驱动的JavaScript工作文件,控制它们与其关联的站点并控制如何处理网络请求。这些文件也负责背景同步。
在探索此文件时,我们发现了几个有趣的密钥对,例如用户字段(如下所示 - 黄色突出显示探索值字段),用户操作,错误代码和功能类型权限。
好的,但如果你超级决定只使用移动应用程序怎么办?我们可以使用DEX2JAR从Bumble APK和Grep中提取Smali类和其他文件进行类似信息。例如,我们使用Grep -i -R“user_field”以查找所有用户字段的位置及其常量值。以下图像显示了user_field_is_hot(0x104)的常量,它是260的十六进制。
既然我们知道“他们的_vote”代码是560和“my_vote”是550,我们可以强制对Server_Get_User端点的请求检索用户数据以包括特定用户的此信息(此方法也可能用于其他端点)。
我们将“仿真”的最后一个升压功能是能够使用无限制的其他过滤器找到用户。但是,我们将通过枚举Bumble的用户(使用已删除帐户除外的用户除外),使用具有其他用户字段的Server_Get_User端点,并将此信息分开在电子表格中。然后,我们可以通过以下脚本过滤我们正在寻找的功能,例如,您可以使用的脚本,例如,在当前位置的10英里内找到所有用户。
免责声明 - 请不要使用此脚本进行臭味的东西,这是严格旨在为教育目的而制作,并作为概念证明。
专辑字段由用户(370)上传到应用程序的所有图片组成。如果帐户已连接到Facebook,您可以检索他们喜欢的所有“兴趣”或页面(420)。
“愿望”字段告诉您他们在应用程序上做了什么以及他们正在寻找的确切人物(360)。
“个人资料”字段提供信息,例如他们的描述,教育,身高,吸烟和饮酒偏好,投票状态,政治偏好,宗教信仰和黄道十二(技术上已经由应用程序显示的信息)(490)。
其他有趣的信息是如果它们具有“移动应用程序”(680),如果它们是“热”(260)(仍然没有找到任何笨拙的人认为热),如果它们是“在线”(330),以及如果他们来自同一个城市(530)(530),他们的“距离”(530)(因为攻击者很容易地欺骗他们的位置,三角测量绝对是一种可能性)。要注意的事情,请求需要用户代理标题以显示数英里的短距离。为了更好地了解您可以检索的信息,这是一个示例用户响应。
我们的帐户最终被锁定并隐藏了更多验证要求。我们在帐户被锁定时测试了检索用户数据,并且仍然工作。因此,即使其他端点如Server_Encounters_vote检查锁定用户,server_get_user端点也不是。
此脚本用作Bumble未启用其API的速率限制,而不是仅使用encrypted_user_ids,Bumble允许用户访问其实际user_ID,它们是顺序(约0到2,000,000,000)的实际user_id。
此博客中的大多数问题源于Bumble Not验证请求服务器端。由于此,高级用户可以通过Web应用程序轻松绕过Bumble的主要优质功能,攻击者可以收集有关Bumble Users的详细信息。
6月16日,2020年6月16日:ISE的第二次联系通过Hackerone发送了更新 - 没有回复。
7月9日,2020年7月9日:ISE的第三次联系提及我们的公开披露计划发送给Bumble的反馈电子邮件 - 没有回复。
2020年7月10日:ISE的第四次联系送往Bumble的伙伴关系表格 - 没有回应。
Sanjana Sarda是一家独立安全评估员的初级安全分析师,该公司是一家安全专家,提供广泛的服务,包括定制安全评估和软件开发。 ISE还运行IOT村,由专业安全研究人员举办讨论,这些研究人员解除了由现成的IOT设备组成的现实漏洞和黑客竞赛。
安全专家提供自定义服务,包括安全评估和软件开发。 ISE还经营IOT Village,由专家安全研究人员和黑客比赛主持谈话。
安全专家提供自定义服务,包括安全评估和软件开发。 ISE还经营IOT Village,由专家安全研究人员和黑客比赛主持谈话。
媒体是一个开放的平台,17亿读者来寻找有洞察力和动态的思维。在这里,专家和未被发现的声音相似地潜入任何主题的核心,并将新的想法带到表面上。学到更多
遵循对您有关的作家,出版物和主题,您将在您的主页和收件箱中看到它们。探索
如果您有一个故事来讲述,知识分享,或者提供提供的视角 - 欢迎回家。很容易和免费发布您对任何主题的思考。写下媒介