用户界面拒绝,后端放行 -- 记一次邮件验证bypass

news/2025/3/15 2:13:52/

目录: 

   前言

 漏洞挖掘

   复现漏洞的步骤

   小贴士

希望大家一切顺利!今天,我将分享一个在 HackerOne 公开项目 中发现的逻辑漏洞。所以,话不多说,让我们直接进入正题。


前言

这个漏洞出现在 HackerOne 的某个公开项目 中。由于它尚未修复,我们暂且将该项目称为 target.com

该漏洞允许我 绕过邮件验证,也就是说,我可以使用任何电子邮件地址注册,而无需真正拥有该邮箱。


漏洞挖掘

我的测试方法是先注册一个账户,并探索主域及其功能——最初不使用 Burp Suite 或任何工具,而是试图彻底理解该应用的逻辑。

随后,我开始检查 登录、注册、重置密码等涉及身份验证的功能,以寻找可能的漏洞。

然而,不幸的是,这些功能都安全,没有发现明显的安全问题。

但我注意到,该应用在注册过程中需要邮件验证。于是,我想到:是否可以绕过这个验证?

首先,我分析了发送到邮箱的验证链接,检查其生成方式是否存在配置错误。我关注的常见问题包括:

可预测的令牌 —— 如果令牌易于猜测,我可以尝试暴力破解

-编码的邮箱值 —— 如果令牌包含我的邮箱地址,并且使用了 Base64 或 URL 编码,那么我可以尝试篡改。

可篡改的参数 —— 如果链接中包含 email 或 user_id 之类的参数,我可以修改它们以尝试绕过验证。

然而,不幸的是,这些问题都不存在 —— 该令牌强大且不可预测

于是,我决定放弃邮件验证的思路,转而测试应用的其他功能,看看是否能找到有趣的漏洞。

我首先检查了 个人资料页面,因为这通常是 CSRF、CORS 配置错误、缓存欺骗、IDOR 以及其他漏洞的高风险区域。

但很快我发现,我无法修改敏感信息,如 邮箱 或 用户名。唯一可编辑的字段仅限于基本信息,如 性别、身高等非关键数据。

img

此时,我决定分析负责更改用户信息的请求

我注意到,任何我修改的参数都会以键值对的形式出现在JSON 请求体中。

就在这时,我突然灵光一闪

img

还记得邮箱验证吗?

如果网站只是在用户界面上阻止了邮箱修改,但后台并没有进行相应的限制呢?

没错! 这正是你现在想到的 😏

我立刻测试了一下,修改了请求

我将 键从 genderIdentity 改为 email。
我将 值 设置为一个 新邮箱。

img

然后,你猜怎么着?

邮箱直接更新了,完全不需要任何验证!

img

这意味着攻击者可以使用任意受害者的邮箱注册账户,绕过邮箱验证,甚至可能冒充受害者身份在平台上活动。

复现漏洞的步骤:

1️⃣ 在 target.com 注册一个新账号,使用任意虚假邮箱完成注册并验证邮箱。

2️⃣ 进入个人资料设置,这里可以修改用户的个人信息。

3️⃣ 使用 Burp Suite 捕获更新用户信息的请求(例如性别、身高等)。

4️⃣ 修改请求的 JSON 数据

将 键 从 "genderIdentity"(或其他可编辑字段)改为 "email"。
将 值 设置为你想更改的新邮箱.

5️⃣ 发送修改后的请求到服务器。

6️⃣ 结果: 邮箱成功更新,无需任何验证,攻击者即可使用受害者的邮箱完成注册。

小贴士:

永远不要完全依赖用户界面!许多在 UI 上看似受限或不可用的操作,可能仍然可以通过 后端 API 直接访问。 直接测试 API 请求,你可能会发现隐藏的漏洞。

我最初将此漏洞报告为中等严重性,但公司工作人员将其升级为高危漏洞

img

申明:本账号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,所有渗透都需获取授权,违者后果自行承担,与本号及作者无关    


http://www.ppmy.cn/news/1579201.html

相关文章

JavaEE Servlet03

目录 浏览器保存用户信息 路由导航守卫 路由嵌套 web会话跟踪机制 JWT生成token(json wen token) 起源 传统的session认证 基于session认证所暴露的问题 基于token的鉴权机制 JWT的主要应用场景 优点: JWT的构成 第一部分:头部(header&…

将docker images导入crictl images

在一些离线环境里,导入k8s镜像比较麻烦,可以通过以下方法导入镜像: 1、从 Docker 导出镜像为 tar 文件 docker save harbor.xxx.cn/nest-lib/test-csi:1.2.0 > test-csi-1.2.0.tar 2、导入镜像到 containerd ctr -nk8s.io images impo…

初阶数据结构(C语言实现)——5.3 堆的应用(1)——堆排序

目录 1 堆的应用1.1 堆排序1.1.1 思路1.1.2 代码实现 1.2 建堆的时间复杂度1.2.1 向下调整1.2.1 向上调整1.2.3 结论 学习堆的应用之前,欢迎学习下堆。 这是博主之前的文章,欢迎学习交流 初阶数据结构(C语言实现)——5.2 二叉树的…

用Python写一个算24点的小程序

一、运行界面 二、显示答案——递归介绍 工作流程&#xff1a; 1. 基本情况&#xff1a;函数首先检查输入的数字列表 nums 的长度。如果列表中只剩下一个数字&#xff0c;它会判断这个数字是否接近 24&#xff08;使用 abs(nums[0] - 24) < 1e-10 来处理浮点数精度问题&…

Haskell爬虫:为电商运营抓取京东优惠券的实战经验

一、需求分析&#xff1a;为什么抓取京东优惠券&#xff1f; 京东作为中国领先的电商平台之一&#xff0c;拥有海量的商品和丰富的优惠券资源。这些优惠券信息对于电商运营者来说具有极高的价值。通过分析竞争对手的优惠券策略&#xff0c;运营者可以更好地制定自己的促销方案…

如何利用Python爬虫获取微店商品详情数据:实战指南

微店作为知名的电商平台&#xff0c;提供了丰富的商品资源。通过Python爬虫技术&#xff0c;可以高效地获取微店商品的详情数据&#xff0c;用于数据分析、研究或其他用途。本文将详细介绍如何使用Python编写爬虫程序&#xff0c;获取微店商品的详情数据&#xff0c;并确保爬虫…

TCP/IP原理详细解析

前言 TCP/IP是一种面向连接&#xff0c;可靠的传输&#xff0c;传输数据大小无限制的。通常情况下&#xff0c;系统与系统之间的http连接需要三次握手和四次挥手&#xff0c;这个执行过程会产生等待时间。这方面在日常开发时需要注意一下。 TCP/IP 是互联网的核心协议族&…

用 DeepSeek 构建 Vue.js 底层架构:高效协作与问题解决实践

文章目录 1. **DeepSeek 与 Vue.js 的完美协作**2. **问题背景**3. **问题分析与解决**3.1 **动态路由未正确生成**3.2 **路由路径配置错误**3.3 **路由嵌套问题**3.4 **通配符路由未配置** 4. **DeepSeek 的核心价值** 在现代前端开发中&#xff0c;Vue.js 以其简洁的语法和灵…