白帽故事 · 2024年8月27日 0

利用开放式重定向、2FA 绕过等漏洞获取$1600赏金奖励

背景介绍

白帽小哥(debu8er)喜欢分享自己的漏洞发现过程,前不久白帽小哥开始在一个VDP(漏洞披露计划)中对 20 个漏洞报告进行分类,在这个过程中,他观看了很多教程视频,其中一个由Sean(zseano)制作的视频“全神贯注:12 个月的漏洞赏金”给了他很大的启发。与其关注子域名,倒不如集中精力在主域名。

重定向漏洞(重复)

1、尝试将值更改为https://www.redacted.com/login?redirectTo=https://evil.com 然后登录,没有任何效果
2、然后尝试https://www.redacted.com/login?redirectTo=//evil.com 依然没有任何效果
3、最后,尝试 https://www.redacted.com/login?redirectTo=/%0d/evil.com ,成功重定向至 evil.com

小哥立即报告了该漏洞,但它被标记为重复漏洞,原始漏洞报告于一天前被其它白帽子提交

身份验证绕过

在某个应用程序注册时,无需电子邮件验证。但是,在创建帐户并登录后,需要进行电子邮件验证以添加电话号码、更改密码或更新电子邮件。应用程序会将 6 位代码 (XXXXXX) 发送到电子邮箱。

POST /api/v1/users/two_factor_auth?email=email@gmail.com HTTP/2
Host: www.redacted.com
Cookie: cookie
Content-Length: 30

应用程序将 2FA 代码发送到电子邮箱,用户确认代码后,就可以更改密码、电话号码等。当尝试更改电话号码时,应用程序会向该电话号码发送 2FA 代码,与上面的POST请求类似。

POST /api/v1/users/two_factor_auth?phone=12405456545 HTTP/2
Host: www.redacted.com
Cookie: cookie
Content-Length: 30

白帽小哥注意到该应用程序使用了相同的 API 来验证 2FA 代码,验证请求如下:

POST /api/v1/users/verify_two_factor_auth HTTP/2
Host: www.redacted.com
Cookie: cookie
Content-Length: 24
Content-Type: application/json

{"otp_attempt":"116293"}

假设启动电话 2FA 后,是否可以使用电子邮件的 2FA 代码来确认电话号码?

复现步骤

1、启动邮箱验证生成新代码
2、使用Burp Suite拦截请求,捕获新邮箱验证码
3、开始电话验证过程
4、修改拦截请求,将新邮箱验证码提交为电话验证代码
5、系统接受邮箱验证码完成电话验证

小哥立即报告该漏洞,获得300 美元赏金奖励。

过早的信息泄露

在子域上,白帽小哥发现登录响应在2FA(双因素认证)之前泄露了账户信息,包括用户名、令牌、电话等。

复现步骤

1、首先访问 https://few.redacted.com/login 登录页面
2、输入有效的电子邮件和密码
3、在发送输入 2FA 代码请求前,观察服务器的 HTTP 响应,包含了大量的敏感信息

该漏洞同样获得了300 美元的赏金奖励。

2FA 的会话固定漏洞

用户完成 2FA 过程后,应用程序会设置会话 cookie _sc_session。

此会话 Cookie 用于对用户进行敏感操作(例如更改电子邮件、密码或电话号码)进行身份验证。

但是此会话 Cookie 可以在不同帐户之间重复使用,从而允许攻击者在获得一次授权后绕过 2FA 检查。

复现步骤

1、创建两个帐户,帐户 A 和帐户 B
2、登录账户 A 并启动需要 2FA 的敏感操作
3、完成 2FA 过程并捕获服务器设置的 _sc_session cookie
4、使用此 _sc_session cookie 对账户 B 执行敏感操作,发现无需2FA即可完成相关操作

小哥立即报告了该漏洞,但该漏洞同样被标记为重复。

小哥并没有气馁,迅速检查了 Android APP,在另一个 API 中发现了同样的漏洞。最终收获 1000 美元赏金奖励。

以上内容由骨哥翻译并整理。

原文:https://medium.com/@debu8er/1600-bounty-on-a-main-domain-8c30557c0f64