漏洞挖掘 | 绕过 Mozilla 的邮箱验证

admin 2024年11月26日14:10:23评论18 views字数 2263阅读7分32秒阅读模式

 

分享一个在 Mozilla 的某款产品中的有趣业务逻辑漏洞。

应用的工作原理

首先,让我快速介绍一下该应用的工作原理。

Mozilla Monitor 旨在帮助用户了解数据泄露情况。用户可以使用邮箱注册该服务,以便在他们的凭据在任何已知的泄露事件中被曝光时收到提醒。它通过扫描大量泄露数据的数据库并与用户邮箱进行交叉对比,从而通知用户其信息是否被暴露。

架构

从架构上看,该应用的数据泄露信息由 haveibeenpwned.com 提供支持。在此基础上,我们的重点将转向识别和解决特定的逻辑漏洞。

漏洞挖掘 | 绕过 Mozilla 的邮箱验证img

主要功能 如前所述,该应用的核心功能是为监控添加电子邮件地址。在免费试用中,每个 Mozilla 账户最多可以添加五个邮箱。

例如,假设你添加了一个邮箱地址(如 [email protected]),系统会向该邮箱发送验证令牌。需要确认该令牌后,监控功能才能激活。

漏洞挖掘 | 绕过 Mozilla 的邮箱验证img
漏洞挖掘 | 绕过 Mozilla 的邮箱验证img

深入研究 Mozilla 的 Monitor 产品

我首先检查了响应中是否有任何泄露的验证令牌,但该部分的处理非常到位。接着,我尝试通过各种技巧来操纵发送到服务器的请求。例如,我尝试在同一个请求中添加多个邮箱地址,希望触发错误或发现潜在的漏洞。我还测试了竞争条件,通过在一个连接中发送多个邮箱,查看服务器是否会错误处理请求或将相同的验证令牌发送到不同的邮箱。然而,服务器再一次表现得毫无破绽。

还有一个问题!验证令牌长度太长,无法被猜测或通过暴力破解解决。例如,一个像 8034a6f3-cecd-49a4-9c43-2cf5976380a1 这样的令牌几乎不可能破解。

漏洞挖掘 | 绕过 Mozilla 的邮箱验证img

没有验证令牌,对我们黑客来说真是个麻烦事 :))

源代码审查

幸运的是,Mozilla 的产品是开源的。所以,我决定深入研究该产品 https://github.com/mozilla/blurts-server的开源代码,并花时间仔细审查。

漏洞挖掘 | 绕过 Mozilla 的邮箱验证img

我很幸运地发现了一个可以检索账户中所有添加邮箱的接口 /api/v1/user/breaches,同时还可以获取每个已验证邮箱关联的数据泄露信息。这是一个绝妙的发现!现在,让我们进一步探索它的功能,以便更好地理解。

漏洞挖掘 | 绕过 Mozilla 的邮箱验证img

getAllEmailsAndBreaches 函数的详细说明

通过搜索 getAllEmailsAndBreaches 函数,我发现该函数不仅检索已验证邮箱的数据,还会返回未验证邮箱的信息。

漏洞挖掘 | 绕过 Mozilla 的邮箱验证img

getAllEmailsAndBreaches 函数的设计目的是收集并返回与用户关联的邮箱地址及这些邮箱相关的数据泄露信息。以下是该函数的工作方式以及它在处理已验证和未验证邮箱方面的影响:

函数定义和参数

该函数接受两个参数:

1.user:包含关于用户及其关联邮箱地址的信息。
2.allBreaches:一个从数据库中获取的数据泄露记录数组。
漏洞挖掘 | 绕过 Mozilla 的邮箱验证

img
数组初始化
初始化了两个数组来存储已验证和未验证的电子邮件verifiedEmails 数组将存储已确认有效的电子邮件,而 unverifiedEmails 数组则存储尚未验证的电子邮件。
漏洞挖掘 | 绕过 Mozilla 的邮箱验证

img
错误处理
该函数包含错误处理机制,以确保用户对象和泄露列表是有效的。
漏洞挖掘 | 绕过 Mozilla 的邮箱验证

img
检索用户电子邮件
这一行调用 getUserEmails 函数,从数据库中获取与用户关联的所有电子邮件地址。需要注意的是,这可能包括已验证和未验证的电子邮件 :))
漏洞挖掘 | 绕过 Mozilla 的邮箱验证

img
处理已验证和未验证的电子邮件
用户在 accounts.firefox.com 上的主要电子邮件始终首先进行处理,并被打包到 verifiedEmails 数组中:
漏洞挖掘 | 绕过 Mozilla 的邮箱验证

img
接下来,函数遍历 monitoredEmails。对于每个电子邮件,如果它被标记为已验证,则将其打包到 verifiedEmails 数组中。如果电子邮件未验证,则将其添加到 unverifiedEmails 数组中:
漏洞挖掘 | 绕过 Mozilla 的邮箱验证

img
返回数据
在函数的末尾,已验证和未验证的电子邮件作为对象的一部分返回。这意味着该函数暴露了未验证电子邮件的信息,如果处理不当,可能会导致安全隐患。
漏洞挖掘 | 绕过 Mozilla 的邮箱验证

img

验证令牌在响应中泄露

如我们所见,未验证电子邮件返回的数据没有经过验证。当我访问这个端点时,发现未验证电子邮件的响应中泄露了验证令牌!
漏洞挖掘 | 绕过 Mozilla 的邮箱验证

img

验证电子邮件端点

我能够抓取到验证令牌,并将其用于验证电子邮件端点来确认电子邮件。现在,由于这个配置错误,我可以轻松地监控任何我想要的电子邮件,而不需要电子邮件所有者的权限 :))
漏洞挖掘 | 绕过 Mozilla 的邮箱验证

img
漏洞挖掘 | 绕过 Mozilla 的邮箱验证

img
电子邮件已经通过验证,现在可以监控它了 :))
漏洞挖掘 | 绕过 Mozilla 的邮箱验证

img
通过移除未使用的 API 端点 /user/breaches API GET 端点修复了漏洞
漏洞挖掘 | 绕过 Mozilla 的邮箱验证

img

结论

总之,Mozilla Monitor 产品中的这个漏洞突显了彻底测试业务逻辑和访问控制的重要性。通过源代码审查,我发现了一个函数中的缺陷,使我能够绕过电子邮件验证,这展示了即使是小小的疏忽也可能导致重大的安全风险。Mozilla 迅速回应并解决了这个问题,体现了他们对用户安全的强烈承诺。我希望这篇总结能强调细致的代码分析和强有力的安全测试在识别和缓解此类漏洞中的价值。
以上内容由白帽子左一翻译并整理。原文:https://0d-amr.medium.com/bypass-email-verification-in-mozilla-2ab45ac36c42

声明:⽂中所涉及的技术、思路和⼯具仅供以安全为⽬的的学习交流使⽤,任何⼈不得将其⽤于⾮法⽤途以及盈利等⽬的,否则后果⾃⾏承担。

原文始发于微信公众号(白帽子左一):漏洞挖掘 | 绕过 Mozilla 的邮箱验证

 

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年11月26日14:10:23
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   漏洞挖掘 | 绕过 Mozilla 的邮箱验证https://cn-sec.com/archives/3439237.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息