JSON Web Token安全漏洞实战:无需确认令牌验证邮箱与密码重置

news/2025/10/31 21:42:52/文章来源:https://www.cnblogs.com/qife122/p/19181322

玩转JSON Web Token:乐趣与收益并存

大家好,希望各位一切安好。今天我想分享一些关于JSON Web Token(JWT)的内容。在这篇文章中,我将告诉大家如何在不使用确认令牌的情况下确认邮箱、重置密码以及接管公司邮箱。

让我们开始吧。

什么是JSON Web Token?

JSON Web Token(JWT)是一种开放标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间作为JSON对象安全地传输信息。由于它是数字签名的,因此可以验证和信任此信息。JWT可以使用密钥(通过HMAC算法)或使用RSA或ECDSA的公钥/私钥对进行签名。

JSON Web Token的结构是什么?

在其紧凑形式中,JSON Web Token由用点(.)分隔的三部分组成:

  • 头部(Header)
  • 有效载荷(Payload)
  • 签名(Signature)

因此,JWT通常如下所示:
xxxxx.yyyyy.zzzzz

现在让我们回到文章主题。

无需确认令牌验证邮箱:

在这里,我通过滥用邀请功能和更改JWT令牌,能够在不使用确认令牌的情况下确认邮箱。

假设攻击者@attacker.com是我的邮箱,我邀请了自己加入用户,并在收件箱中收到了确认令牌。

Burp中的响应类似于:

令牌类似于:

解码JWT令牌:

现在我邀请了admin@company.com,Burp中的响应是:

我在这里做的是更改了我收件箱中收到的JSON Web令牌。我将电子邮件从attacker@attacker.com更改为admin@company.com,将攻击者ID更改为管理员ID,并将时间戳更改为签发时间戳,正如你在响应“created date”:"xxxxxxxx"中看到的那样。(有时服务器会验证签发时间戳以验证令牌。)我能够确认用户并设置admin@company.com的密码。

我们可以使用这些凭据登录公司的不同SSO集成,例如支持面板等。

重置其他用户的密码:

这个方法有点棘手。然而,我能够重置我组织用户的密码,因为我能够通过用户选项卡和浏览器历史记录的物理访问看到他们的ID。

现在我使用我的邮箱attacker@attacker.com请求了一个密码重置链接,重置链接是:

将我的ID更改为目标用户ID后,我能够更改密码。

该Web应用程序没有验证计算出的签名,因此我能够重新编码JWT。

为了更深入的理解,你可以参考:
https://jwt.io/introduction/
https://hackerone.com/reports/638635

就这样吧,各位!

感谢阅读,别忘了分享你的想法。

另外,请查看 https://blog.securitybreached.org/2020/03/17/getting-started-in-android-apps-pentesting/
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)

公众号二维码

公众号二维码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/952240.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软考-关于《网络安全法》修订相关题目(10道)

根据2025年10月28日通过的《网络安全法》修改决定,该修正案将于何时正式施行?A. 2025年11月1日 B. 2025年12月1日 C. 2026年1月1日 D. 2026年3月1日 答案:C 解析:文章明确指出"自2026年1月1日起施行"。新…

【算法初步】1插入排序

【算法初步】1插入排序using System;class InsertionSortExample {static void Main(){// 测试数组int[] array = { 12, 11, 13, 5, 6 };Console.WriteLine("排序前的数组:");PrintArray(array);// 执行插入…

WebRTC实时音视频通信核心原理

寻常的WebSocket流程是这样的如果都与服务器进行交流,会造成服务器压力大,通讯时间长,实时效果不好,那么怎么解决? 这就要用到我们接下来讲的WebRTC实时通讯 拿出笔记本,让我们开冲!! 概念 WebRTC(Web Real-Ti…

Python高阶和匿名函数 _ 脱了马甲也要认识

Python高阶和匿名函数 _ 脱了马甲也要认识def calculate_and_print(num, calculator, formatter): result = calculator(num) formatter(num, result)def print_with_vertical_bar(num, result): print(f&quo…

第11天(中等题 滑动窗口)

打卡第十一天 1道简单题+2道中等题越短越合法型滑动窗口: 实例由于子数组越长,乘积越大,越不能满足题目要求;反之,子数组越短,乘积越小,越能满足题目要求。有这种性质的题目,可以用滑动窗口解决。内层循环结束后…

麒麟 V10系统中离线安装python的setuptools和pip,并使用python代码查询达梦数据库,并上传文件到minio

麒麟 V10系统中默认安装了python3.7版本,但是没有安装pip命令 1.python 环境安装1.下载Python版本对用的 setuptools和pip版本 源码包下载地址:setuptools:https://pypi.org/project/setuptools/#files(选择.tar.g…

如何选择陶瓷放电管

陶瓷放电管GDT原理:气体放电。电管有一脉冲击穿电压,不工作状态是电路处于断路,电阻大,电容小。一旦脉冲过压达到放电管的脉冲击穿电压,极间的电场强度超过气体的击穿强度时,就引起间隙放电,管内气体电离,放电…

10.31每日总结

10.31每日总结学习了软考的知识,总结回顾了周一学的画图的东西

对称密钥算法 非对称密钥算法 Hash函数 公钥和私钥在网络安全中的应用流程超超超详细,清楚,简单!!!

不是哥们,理解了半天,感觉自己是天才😎😎😎 一、对称密钥算法(私钥加密) 对称密钥算法也称为私钥加密,这里的 “私钥” 指的是 “秘密的、需要保密的密钥” ,而不是非对称体系中的“私钥”。它强调的是这个…

读《代码大全2》读后感3

书中对 “变量命名与代码逻辑梳理” 的讲解。之前在写小程序的报名统计功能时,我把存储用户信息的变量命名为 “user1”“user2”,还把数据筛选、统计、导出的逻辑揉在一个函数里。后来社团换届,新成员接手代码时,…

revit api楼梯创建

revit api楼梯创建 using Autodesk.Revit.Attributes; using Autodesk.Revit.DB; using Autodesk.Revit.DB.Architecture; using Autodesk.Revit.UI; using System; using System.Collections.Generic;namespace Stai…

《代码大全2》初读有感

第一次翻开《代码大全2》的时候,我其实有点被它的厚度吓到了。这本厚得像砖头一样的书,真的能读完吗? 但慢慢读下去,我发现了很多有意思的地方。原来给变量取名有这么多讲究,以前我都是随便写个a、b、c的。作者说…

代码大全2{2}

最深的感悟是 “软件构建是系统性工程”。作者没有局限于代码本身,而是从软件质量目标、项目规划、团队协作等部分切入。其中关于 “技术债务” 的论述我觉得很有道理,每一次敷衍的设计都会为后续埋下隐患。优秀的程…

revit api 几何图元连接

revit api 几何图元连接namespace Autodesk.Revit.DB {public static class JoinGeometryUtils{public static bool AreElementsJoined(Document document, Element firstElement, Element secondElement);public sta…

读《代码大全2》读后感2

书中关于 “代码设计” 的内容,也帮我解决了大难题。在做图书管理系统时,我一股脑把所有功能都堆在一个类里,写了几百行代码后,想加个 “借阅记录查询” 功能,改一处就报错一处。直到看到书中说 “小型工具适合结…

公众号排版工具实测报告:为什么有一云AI编辑器成为全能高效的“排版专家”?

🧭 一、前言:AI排版正在重构创作效率 过去,公众号运营者最怕的不是写不出内容,而是排版。 错行、图片偏移、格式混乱…… 这些问题几乎每天都在消耗创作者的耐心。 但随着AI技术进入内容生态,“AI排版编辑器”迅…

代码大全2{1}

编程不只是写代码,前期的需求分析、架构设计和规划是高质量软件的基石。书强调 “磨刀不误砍柴工”,充分的前期准备能避免后期大量返工,那些关于项目复杂度评估、构建环境搭建的建议,既有理论高度又贴近实践,严谨…

Shooting Battle:Linux系统下的网络编程究极产物

服务器端 一、关键技术要点总结 1. 网络编程基础Socket API 使用:socket() → bind() → listen() → accept() 完整流程 TCP 字节流特性:无消息边界,需自定义协议(帧结束标记 <<<FRAME_END>>>)…

revit api隔离图元

revit api隔离图元namespace Autodesk.Revit.DB {public class View : Element{// 相关隔离的 APIpublic void ConvertTemporaryHideIsolateToPermanent();public void IsolateCategoriesTemporary(ICollection<Ele…

revit api明细表

revit api明细表如果想要读取明细表的内容,可以用 ViewSchedule 父类 TableView 的接口。 namespace Autodesk.Revit.DB {public class TableView : View{public int MaximumRowHeight { get; }public int MaximumCol…