电子邮件OTP验证绕过漏洞分析

本文详细介绍了在mypup.app应用中发现的电子邮件验证流程高危漏洞,攻击者可通过篡改验证请求中的emailAddress参数,无需OTP即可验证任意邮箱地址,可能导致账户接管和权限提升等严重后果。

电子邮件OTP验证绕过漏洞分析

作者介绍

我是Ankit Rathva,一名MCA一年级学生,同时也是一名道德黑客和安全研究员。我热衷于发现Web应用程序中的逻辑漏洞、授权问题和数据完整性缺陷。作为漏洞赏金猎人和红队成员,我通过实践测试、取证分析和谨慎披露,帮助团队修复有影响力的问题,同时保护用户安全。我发布清晰、对开发者友好的分析报告和实用的缓解建议。

联系我:https://linkedin.com/in/ankitrathva

漏洞概述

TL;DR: 我在mypup.app的电子邮件验证流程中发现了一个高危漏洞,攻击者可以通过篡改验证请求中的emailAddress参数来验证任意电子邮件地址。能够拦截和修改验证请求的攻击者(例如通过代理会话)可以让服务器接受从未接收或输入OTP的地址的验证。这可能导致账户接管或其他权限提升,其中电子邮件所有权用于恢复/身份验证。

漏洞详情

在测试https://target.app/Account/Manage的账户管理流程时,我发现最终的验证请求并未与原始电子邮件/OTP对绑定。通过在请求到达服务器之前修改请求负载中的emailAddress参数,可以在所有者从未接收或输入OTP的情况下将任意电子邮件标记为已验证。

漏洞名称: 电子邮件验证绕过 严重程度: 高危

复现步骤

这些步骤描述了如何在测试期间复现该问题。请勿将其用于恶意目的。

  1. 在网站上创建新账户并登录

  2. 转到账户管理页面:https://target.app/Account/Manage

  3. 将账户电子邮件更改为攻击者控制的地址(例如:attacker@mail.com)。网站会生成两个OTP - 一个用于当前电子邮件,一个用于新电子邮件 - 并在保存前提示输入

  4. 使用拦截代理(如Burp Suite)拦截传出的验证请求

  5. 在请求负载中找到参数:

    1
    
    "emailAddress": "attacker@mail.com"
    
  6. 将其修改为:

    1
    
    "emailAddress": "victim@mail.com"
    

    然后将请求转发到服务器

  7. 请求并将victim@mail.com标记为已验证 - 即使OTP从未发送给受害者或由受害者输入

影响

  • 攻击者可以在不涉及所有者的情况下将任何电子邮件标记为已验证
  • 如果应用程序允许使用已验证的电子邮件登录、重置密码或关联账户,此问题可能导致账户接管或未经授权的访问
  • 通过将OTP与其本应保护的电子邮件解耦,绕过了电子邮件OTP验证的核心目的

披露与奖励

我向target.app安全/联系渠道报告了此问题。公司验证了发现并确认了该问题 - 他们为此报告奖励了我75欧元。我赞赏供应商的快速验证和负责任的处理。

关注更多

如果你想阅读更多发现、分析报告和漏洞赏金指南,请关注我的Medium个人资料并开启通知 - 我定期发布分析报告、技术演练和实用的缓解技巧。感谢阅读!

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计