绕过公共漏洞赏金计划中的双重身份验证: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恶意软件开发与对抗视频教程

  • 图片

  • 图片


  • 图片