扫码领资料
获网安教程
来Track安全社区投稿~
赢千元稿费!还有保底奖励~(
https://bbs.zkaq.cn)
Netflix —— 绕过多因素认证(MFA)
介绍
在参与 Netflix 漏洞赏金计划期间,我发现了一个漏洞,可以绕过其在“更改邮箱”接口上实施的多因素认证(MFA)。
这一问题之所以存在,是因为存在一种替代方法可以更改邮箱地址,而无需完成MFA流程。
这个漏洞在 Bugcrowd 上被评为P3等级。
我想感谢 Netflix 允许我公开这份报告。该漏洞现已修复并完成上线。
理解 Netflix 的 MFA
当你登录 Netflix 账户时,可以通过这个网址更新邮箱地址:
https://netflix.com/email。访问该链接后,你会被重定向到
/mfa 接口,在进行任何更改之前需要完成身份验证。
验证方式包括:通过电子邮件或手机号接收验证码,或者提供与账户关联的信用卡号码。
这意味着,如果你成功窃取了某人的凭证,你仍然需要完成MFA流程才能更改邮箱地址并完全接管他们的账户。
一些常见的MFA/2FA绕过技术包括:
1. 响应篡改。2. 直接请求接口。3. 缺失2FA验证码完整性验证。4. 缺乏暴力破解保护/速率限制。5. 2FA验证码泄露在响应中。
在这个案例中,这些方法都不起作用。因此,在这阶段,我认为MFA接口是安全的。
TL;DR
在这篇博客文章中,我展示了一个发现,即 Netflix 上的一个替代接口“/extramember/create-credentials”缺少多因素认证(MFA),使得用户能够在无需完成额外验证步骤的情况下更改邮箱地址。
重现步骤报告
1. 访问
https://www.netflix.com/YourAccount
并选择“更改邮箱”。2. 你将遇到MFA页面 —
https://www.netflix.com/mfa。
3. 为绕过此步骤,访问“
https://www.netflix.com/extramember/create-credentials”。
4. 使用新邮箱地址和密码填写表单,然后点击下一步。5. 你将被重定向到
https://netflix.com,邮箱地址和密码将被更新,无需MFA。
发现阶段 — 漫长的路径
Netflix 为特定国家提供了一些功能。因此,我的策略最初是浏览他们的“帮助中心”以收集更多关于可用功能和相应国家的信息。
在这个阶段,我创建了一些自动化脚本,浏览Netflix帮助中心页面并检查其标题,以识别任何有趣的功能。
有一个特别引起我注意:“Extra Member。” 链接:
https://help.netflix.com/en/node/123279/cl
在测试时,这个功能仅在以下国家/地区可用:
-
• 秘鲁 -
• 智利 -
• 尼泊尔
这意味着,为了获得该功能,你需要从这些国家之一注册并支付订阅费用。
为了测试,我尝试使用来自这三个国家的 IP 地址,并成功注册了一个新账户。
为了继续支付订阅费用,对于某些国家,也可以通过第三方网站购买礼品卡,并在Netflix支付过程中使用它们。然而,在这种情况下,对于这三个国家,我没有找到任何购买礼品卡的方法。
最终,我放弃了尝试支付订阅费用,因为没有任何支付方式有效。
公司公告— 几周后
在参与漏洞赏金计划时,我认为如果你订阅公司的新闻发布,可以及时收到关于近期变动和新功能介绍的消息,这会是非常有益的。
在 Netflix 的案例中,我注意到以下文章于2023年2月8日发布。
链接:
https://about.netflix.com/en/news/an-update-on-sharing
“在过去的一年里,我们一直在探索解决拉丁美洲问题的不同方法,我们现在已经准备好在未来几个月广泛推出这些方法,今天从加拿大、新西兰、葡萄牙和西班牙开始。我们的重点是为会员提供更大的控制权,决定谁可以访问他们的账户。”
文章中介绍了“Extra Member”功能的更新。该功能现在还在以下国家/地区可用:
-
• 加拿大 -
• 新西兰 -
• 葡萄牙 -
• 西班牙
它仍然不适用于我目前所在的国家,但知道了这些新信息后,我决定尝试从上述国家之一注册并再次支付订阅费用。
注册账户
如果你尝试使用知名的VPN服务,注册新账户可能会变得困难,因为该VPN的IP地址可能已经被用于创建大量注册,随后被列入黑名单。在这种情况下,尝试在
Netflix.com
上注册将导致错误信息“发生错误”。
在我的情况下,我使用的是来自西班牙的IP,并且这并非来自任何知名VPN服务。
不幸的是,这仍然不够,因为一旦你使用这些国家的IP注册,你将需要使用以下几种方式支付订阅费用:
-
• PayPal -
• 借记卡 -
• 礼品卡
再次,我尝试使用 PayPal 和几张借记卡支付订阅费用,但再次失败,显示错误信息“发生错误”。
最后,我决定使用礼品卡方式。在Netflix中,当你使用来自西班牙的IP并访问礼品卡页面时,你会发现可以从以下网站购买礼品卡:
startselect.com
注意:购买礼品卡也取决于国家。在西班牙,似乎
startselect.com
可用。
我所做的是打开
https://startselect.com/es-es/tarjeta-regalo-netflix-variable/42228
并注册。
不幸的是,仅在
startselect.com
上注册还不够。我需要通过该网站的验证检查,验证内容包括:
-
• 拍一张拿着写有“
Netflix.com”和代金券金额(在我的情况下是25欧元)纸条的自拍照。
无论如何,我这么做了,目的是为了能够使用那个功能。
准备使用礼品卡。
终于!我使用西班牙的 IP 地址注册,并使用最近购买的西班牙礼品卡。
接下来,解锁了以下功能:
拥有了该功能的访问权限后,我决定查找所有与之相关的端点。我检查了主要的 JS 文件,发现了多个与“Extra Member”相关的端点。
)), (0,
M.default)
(j, J, (H = { }, (0,
M.default)
(H,
et.ADD_ON_DECLINE_INVITE,
'/extramember/declineinvitation'), (0,
M.default)
(H,
et.ADD_ON_DECLINE_CONFIRM,
'/extramember/declineconfirmed'), (0,
M.default)
(H,
et.ADD_ON_ACTIVATE_ERROR,
'/extramember/error'), (0,
M.default)
(H,
et.ADD_ON_ACTIVATE_INVITE_ACCEPTED_ERROR,
'/extramember/accepted-error'), (0,
M.default)
(H,
et.ADD_ON_ACTIVATE_INVITE_INVALID_ERROR,
'/extramember/invalid-error'), (0,
M.default)
(H,
et.ADD_ON_CLAIM_REGISTRATION_CONTEXT_ERROR,
'/extramember/claim-error'), (0,
M.default)
(H,
et.ADD_ON_ACTIVATE_CONTEXT,
'/extramember/activate'), (0,
M.default)
(H,
et.ADD_ON_PASSWORD_CONTEXT,
'/extramember/context'), (0,
M.default)
(H,
et.ADD_ON_LOGIN_CREDENTIALS_SETUP_CONTEXT,
'/extramember/activate-credentials'), (0,
M.default)
(H,
et.ADD_ON_CLAIM_REGISTRATION_SETUP_CONTEXT,
'/extramember/claim'), (0,
M.default)
(H,
et.ADD_ON_PASSWORD_CREATION,
'/extramember/createpassword'), (0,
M.default)
(H,
et.ADD_ON_LOGIN_CREDENTIALS_SETUP,
'/extramember/create-credentials'), (0,
M.default)
(H,
et.ADD_ON_CLAIM_REGISTRATION_SETUP,
'/extramember/claim-setup'), (0,
M.default)
(H,
et.ADD_ON_REGISTRATION,
'/extramember/registration'), (0,
M.default)
(H,
et.ADD_ON_PROFILE_SELECTION,
'/extramember/profileselection'), (0,
M.default)
(H,
et.PASSWORD_ENTRY,
'/extramember/nameprofile'), (0,
M.default)
(H,
et.ADD_ON_WELCOME_BACK,
'/simpleSetup/welcomeback'), (0,
M.default)
(H,
et.ADD_ON_PROFILE_CREATION,
'/simpleSetup/createprofile'), (0,
M.default)
(H,
et.ENTER_PASSWORD_RESET,
'/loginhelp'), H)), (0,
M.default)
(j, $, (L = { }, (0,
M.default)
(L,
et.DEMO_ADS_OPT_OUT,
'/settings/demographics/demographicAdsOptOut'), (0,
M.default)
(L,
et.BEHAVIORAL_ADS_OPT_OUT,
'/settings/demographics/behavioralAdsOptOut'), (0,
M.default)
(L,
et.EDIT_GENDER,
'/settings/demographics/editGender'), L)), (0,
M.default)
(j, ee, (_ = { }, (0,
M.default)
(_,
et.NOTIFICATION_SETTINGS,
'/notificationsettings'), (0,
M.default)
(_,
et.NOTIFICATION_SETTINGS_EMAIL,
'/notificationsettings/email'), (0,
M.default)
(_,
et.NOTIFICATION_SETTINGS_TEXT,
'/notificationsettings/text'), (0,
M.default)
(_,
et.NOTIFICATION_SETTINGS_PUSH,
'/notificationsettings/push'), _)), j);
t.MONEYBALL_PATHS
= er
检查所有端点后,我发现其中一个行为异常。访问 /create-credentials 时,我看到以下页面:
如果你输入新的电子邮件和密码,你当前的电子邮件和密码会被更改,并且你会被重定向到 /youraccount 页面。
该端点不需要任何 MFA。这意味着 MFA 被绕过了。
在这一步,我认为这个端点仅对“Extra Member”用户可用,但最终发现它对所有 Netflix 用户都有效。
https://bbs.zkaq.cn
声明:⽂中所涉及的技术、思路和⼯具仅供以安全为⽬的的学习交流使⽤,任何⼈不得将其⽤于⾮法⽤途以及盈利等⽬的,否则后果⾃⾏承担。所有渗透都需获取授权!
如果你是一个网络安全爱好者,欢迎加入我的知识星球:zk安全知识星球,我们一起进步一起学习。星球不定期会分享一些前沿漏洞,每周安全面试经验、SRC实战纪实等文章分享,微信识别二维码,即可加入。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论