绕过公共漏洞赏金计划中的双重身份验证:6000 美元的旅程
绕过公共漏洞赏金计划中的双重身份验证:6000 美元的旅程
haidragon 安全狗的自我修养 2025-05-12 04:29
作为一名漏洞赏金猎人,发现公共程序中的漏洞既令人兴奋又充满成就感。在这篇文章中,我将带您了解我如何在一个公共漏洞赏金计划(为保密起见,我将其匿名化为 redacted.com)中发现并利用一个双因素身份验证 (2FA) 绕过漏洞,并最终获得 6000 美元的奖励。我将分享一些技术细节,包括一个示例 HTTP 请求作为背景信息,以及我在重新测试阶段的发现和体会。
初步发现:绕过 OTP 验证
整个过程始于 redacted.com 上的一个标准登录流程。输入有效凭证后,该 Web 应用程序会提示输入一次性密码 (OTP),这是其双因素身份验证 (2FA) 机制的一部分。为了分析该过程,我在后台运行了 Burp Suite 来拦截 HTTP 请求。
以下是我所做的:
1. 拦截了 OTP 请求:我输入了一个随机 OTP,在 Burp Suite 的代理选项卡中捕获了请求,并将其发送到中继器模块进行进一步分析。
1. 放弃请求:我没有转发 OTP 请求,而是将其完全放弃。
3.分析请求:OTP 验证请求的授权标头中包含一个 JSON Web 令牌 (JWT),该令牌是在OTP 验证之前生成的。这是一个严重漏洞,因为 JWT 似乎授予了已验证端点的访问权限。
以下是拦截上下文的 HTTP 请求的净化示例:
POST /api/verify-otp HTTP/1.1Host: redacted.comContent-Type: application/jsonAuthorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiMTIzNDU2Nzg5MCIsImlhdCI6MTcyODAwMDAwMCwiZXhwIjoxNzI4MDAzNjAwfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5cConnection: close{“otp”:”123456″}
授权标头中的 JWT 令牌是关键。通过丢弃 OTP 验证请求,我推测该令牌可能仍然有效,可以访问其他端点。
使用 GAP 和 Intruder 探索 API 端点
为了测试漏洞的严重程度,我使用了 Burp Suite 的“获取所有参数”(GAP)扩展来枚举与 redacted.com 关联的所有 API 端点。然后,我利用 Burp 的Intruder工具系统地向这些端点发送请求,并在 Authorization 标头中包含 JWT 令牌。
令人惊讶的是,我无需完成 OTP 验证就获得了所有API 端点的访问权限。这是一个严重的安全漏洞,因为它实际上完全绕过了 2FA 机制。
举报与奖励
我负责任地向程序报告了漏洞,详细说明了复现步骤和潜在影响(例如,未经授权访问敏感用户数据或操作)。公司承认了这个问题,修复了漏洞,并奖励我4000 美元作为初步发现的奖励。
重新测试:持久支付端点缺陷
修复后,我重新测试了该应用程序(时隔一年),以确保漏洞已得到解决。现在,OTP 验证过程似乎更加稳健,大多数端点都会将未经身份验证的请求重定向到 OTP 页面。然而,我决定进一步探索另一种方法:浏览器强制。
我没有在浏览器中与 OTP 提示符进行交互,而是直接输入 URL 手动导航到付款/订单页面 (/payment/order)。令我惊讶的是,无需 OTP 验证,这个端点仍然可以访问。我可以查看付款功能并进行交互,这是一个严重的疏忽。
为了便于理解,以下是向支付端点发出的示例 HTTP 请求:
GET
/payment/
order
/transection HTTP/
1.1
Host:
redacted.com
Cookie:
Connection:
close
我测试了其他端点,但它们都正确地重定向到了 OTP 页面。支付/订单/交易端点是唯一仍然易受攻击的端点,这表明修复尚未完成。
第二次举报及额外奖励
我提交了一份后续报告,重点指出了支付/订单端点一直存在的问题。该公司迅速解决了这一疏忽,并额外奖励了我2000 美元,使赏金总额达到6000 美元。
关键要点
这次经历给漏洞赏金猎人和开发者们带来了几个重要的教训:
1. 超越显而易见的测试:丢弃请求或绕过 UI 提示(例如,浏览器强制)可以揭示隐藏的漏洞。
1. 彻底枚举端点:GAP 和 Intruder 等工具对于发现不受保护的端点非常有用。
1. 修复后重新测试:不完整的补丁可能会使关键端点暴露,如付款/订单页面所示。
1. 负责任的披露:清晰、详细的报告可帮助公司有效地解决问题并公平地奖励猎人。
对于开发者来说,此案例凸显了在每个端点验证身份验证和授权的重要性,尤其是对于支付等敏感功能。在完成 2FA 检查之前生成 JWT 无异于酿成灾难。
结论
发现并利用这个双因素身份验证 (2FA) 绕过漏洞的过程,无论从经济角度还是从知识角度来说,都是一段收获颇丰的旅程。它再次印证了坚持不懈、创造性测试以及彻底反复测试在漏洞赏金狩猎中的重要性。我希望这篇文章能够激励其他赏金猎人更深入地挖掘漏洞,并帮助开发人员增强他们的应用程序。
祝您狩猎愉快,注意安全!
rust语言全栈开发视频教程-第一季(2025最新)
详细目录
mac/ios安全视频
QT开发底层原理与安全逆向视频教程
linux文件系统存储与文件过滤安全开发视频教程(2024最新)
linux高级usb安全开发与源码分析视频教程
linux程序设计与安全开发
****-
-
w
i
n
d
o
w
s
网
络
安
全
防
火
墙
与
虚
拟
网
卡
(
更
新
完
成
) -
-
w
i
n
d
o
w
s
文
件
过
滤
(
更
新
完
成
) -
-
U
S
B
过
滤
(
更
新
完
成
) -
-
游
戏
安
全
(
更
新
中
) -
-
i
o
s
逆
向 -
-
w
i
n
d
b
g -
-
还
有
很
多
免
费
教
程
(
限
学
员
) -
-
-
windows恶意软件开发与对抗视频教程
-
-
-