我最近在 Mozilla 的一个产品中发现的一个有趣的业务逻辑漏洞。
我带着我值得信赖的代理和很多好奇心,在 Mozilla 的产品周围闲逛。我深入研究 — 点击、测试并试图了解每个小功能的工作原理。在深入研究了所有请求和功能之后,我开始觉得自己像个即将破案的侦探。但有一款产品脱颖而出 — 一款引起了我注意的监控产品。这是我测试的重点,我发现的精力是值得的。让我解释一下。
应用程序如何运作
首先,让我简要介绍一下该应用程序的工作原理。
Mozilla 的 Monitor 旨在帮助用户随时了解数据泄露情况。用户可以用他们的电子邮件注册,以便在他们的凭证在任何已知的违规行为中被盗用时收到提醒。它扫描泄露信息的大型数据库并交叉引用用户电子邮件以通知他们任何暴露。
建筑
从架构中可以明显看出,泄露数据由 haveibeenpwned.com 提供支持。有了这个基础,我们现在的重点将转移到识别和解决特定的 logic 漏洞上。
正如我提到的,主要功能围绕添加电子邮件地址进行监控。在免费试用中,每个 Mozilla 帐户最多可以添加 5 封电子邮件。
例如,假设您添加了一封类似于 [email protected] 的电子邮件 — 添加后,验证令牌将发送到该电子邮件地址,需要确认该地址才能激活监控。
深入了解 Mozilla 的监控产品
我首先检查了响应中是否有任何泄露的验证令牌,但处理得很好。接下来,我尝试使用各种技巧来处理我发送到服务器的请求。例如,我尝试在同一请求中添加多封电子邮件,希望触发错误或检索任何潜在的泄漏。我还通过在一个连接中发送多封电子邮件来测试争用条件,以查看服务器是否会错误地处理请求或将相同的验证令牌发送到不同的电子邮件。但是,服务器再一次完美地处理了所有事情。
这里还有一个问题!v erification 令牌太长,无法猜测或暴力破解。例如,像这样的代币几乎不可能破解。8034a6f3-cecd-49a4-9c43-2cf5976380a1
如果没有那个验证令牌,我们作为黑客现在就有麻烦了 :))
源代码审查
我很幸运,因为 Mozilla 的产品有一个开源代码,所以,我决定更深入地研究产品的开源代码,并花时间审查它。
我很幸运地发现了一个终端节点,它可以检索添加到帐户 /api/v1/user/breach 的所有电子邮件,以及与每封已验证电子邮件相关的违规行为。这是一个了不起的发现!现在,让我们进一步探索它的功能以获得更好的理解。
功能详细说明getAllEmailsAndBreaches
(如果你不在乎那个解释,你可以跳过它)
通过搜索该函数,我发现该函数不仅仅检索已验证电子邮件的数据;它还返回未经验证的电子邮件的信息。getAllEmailsAndBreaches
该函数旨在收集和返回与用户关联的电子邮件地址,以及与这些电子邮件相关的任何违规行为。以下是该函数的运行方式及其对已验证和未验证电子邮件的影响:getAllEmailsAndBreaches
-
功能定义及参数:
-
该函数采用两个参数:,其中包含有关用户及其关联电子邮件地址的信息,以及 ,这是数据库中的泄露记录数组。
user
allBreaches
2. 数组的初始化:
-
初始化两个数组以存储已验证和未验证的电子邮件。该数组将保存已确认为有效的电子邮件,而该数组将存储尚未验证的电子邮件。
verifiedEmails
unverifiedEmails
3. 错误处理:
-
该函数包含错误处理,以确保用户对象和违规列表都有效。
4. 检索用户电子邮件:
-
此行调用 ,它从数据库中检索与用户关联的所有电子邮件地址。请务必注意,这可能包括已验证和未验证的电子邮件 :))
getUserEmails
5. 处理已验证和未经验证的电子邮件:
-
accounts.firefox.com 用户的主要电子邮件始终首先处理,并将其捆绑到数组中:
verifiedEmails
-
接下来,该函数遍历 .对于每封电子邮件,如果标记为已验证,则会将其捆绑到数组中。但是,如果电子邮件未经过验证,则会将其添加到数组中:
monitoredEmails
verifiedEmails
unverifiedEmails
6. 返回数据:
-
在函数结束时,已验证和未验证的电子邮件都将作为对象的一部分返回。这意味着该函数会公开有关未经验证的电子邮件的信息,如果处理不当,可能会导致安全问题。
验证令牌在响应中泄露
正如我们所看到的,没有对未经验证的电子邮件返回的数据进行验证。当我访问此终端节点时,我发现验证令牌在那些未经验证的电子邮件的响应中泄露了。来吧!
验证电子邮件端点
我能够获取该验证令牌,并在验证电子邮件端点中使用它来确认电子邮件。现在,我可以轻松监控我想要的任何电子邮件,而无需电子邮件所有者的任何许可,多亏了这个错误配置:))
该电子邮件已经过验证,现在可以对其进行监控 :))
通过删除未使用的 API 端点 /user/breaches API GET 端点修复了漏洞
提交报告时间:2024 年 9 月 11 日
待定计划审查:2024 年 9 月 12 日
分类为媒介:2024 年 9 月 12 日
赏金奖励:2024 年 9 月 23 日
已解决:2024 年 11 月 19 日
结论
总之,Mozilla 的 Monitor 产品中的这个漏洞凸显了彻底测试业务逻辑和访问控制的极端重要性。通过源代码审查,我发现了一个函数中的一个缺陷,该缺陷允许我绕过电子邮件验证,这表明即使是很小的疏忽也可能导致重大的安全风险。Mozilla 对此问题的迅速响应反映了他们对用户安全的坚定承诺。我希望这篇文章能强调细致的代码分析和强大的安全测试在识别和缓解此类漏洞方面的价值。
其它相关课程
详细目录
QT开发底层原理与安全逆向视频教程
linux文件系统存储与文件过滤安全开发视频教程(2024最新)
linux高级usb安全开发与源码分析视频教程
linux程序设计与安全开发
-
windows恶意软件开发与对抗视频教程
-
windows网络安全防火墙与虚拟网卡(更新完成)
-
windows文件过滤(更新完成)
-
USB过滤(更新完成)
-
游戏安全(更新中)
-
ios逆向
-
windbg
-
还有很多免费教程(限学员)
-
更多详细内容添加作者微信
原文始发于微信公众号(安全狗的自我修养):绕过 Mozilla 中的电子邮件验证
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论