JWT越权访问漏洞

news2025/1/10 20:56:56

JWT越权访问漏洞

文章目录

    • JWT越权访问漏洞
      • 原文参考 :[xiu](http://www.xiusafe.com/2023/02/08/JWT/)
      • 1 靶场搭建:
      • 2 JWT的头部组成
        • 2.1 头部
          • 2.1.1 alg:
          • 2.1.2 type:
        • 2.2 payload
        • 2.3 签名
      • 3 漏洞复现
        • 3.1 攻击点token(第三关)
        • 3.2 对token值base64的加密码方式进行解析加密编码,只能看。
        • 3.3 修改解密后的json,在加密成base64
          • 3.3.1 base64加密方式解密网
          • 3.3.2 将获取修改后的base64,放入解读加密方式
          • 3.3.3 最后组成base64,后面的点一定有,后台是根据点分隔取值
        • 3.4 使用bp抓包,将加密后的base64替换token值,send发送
      • 4 第四关
      • 5 第五关
      • 6 第7关

原文参考 :xiu

1 靶场搭建:

webgoat-server-8.1.0.jar  使用这个靶场

启动靶场为:java -jar webgoat-server-8.1.0.jar --server.port=8888

访问页面:http://127.0.0.1:8888/WebGoat/ —>选择注册

在这里插入图片描述

填写用户密码,点击注册

在这里插入图片描述

选择 JWT

在这里插入图片描述

选择3,有流程说明
在这里插入图片描述

选这第四关进行投票

在这里插入图片描述

切换一个用户,进行投票,并删除票,提示只有admin用户可以,使用burp suite焯去删除发送的数据包

在这里插入图片描述

bp抓到包,提示只有admin可以进行重置票

在这里插入图片描述

用户的身份在token中,分析里面值进行修改token

Cookie: access_token=eyJhbGciOiJIUzUxMiJ9.eyJpYXQiOjE2OTU0NzA1MzgsImFkbWluIjoiZmFsc2UiLCJ1c2VyIjoiVG9tIn0.19GkQq28-pNBY-8wYA3LnrEOZ5gF1h2HggUH73nTh994L2ZK8sJmkx1tphdGWpgjHTQoXBDcCCZdAoVWwl1GCw;

2 JWT的头部组成

在这里插入图片描述

JWT(JSON Web Token)由三部分组成:头部(Header)、载荷(Payload)、签名
(Signature)。
 头部(Header):头部通常由两部分组成,算法类型和令牌类型。
 算法类型:指定用于生成签名的算法,例如 HMAC、RSA 或者 ECDSA。
 令牌类型:指定令牌的类型,常见的是 JWT。
头部使用 Base64Url 编码表示,并作为整个 JWT 的第一部分。头部的一个示例:
{
 "alg": "HS256",none
 "typ": "JWT"
}
 载荷(Payload):载荷存储了有关用户或实体的声明和其他有关信息。
 声明:如用户 ID、角色、权限等信息。
 注册声明:包含一些标准的声明(比如发行人、过期时间等)和一些自定义的
声明。
载荷也使用 Base64Url 编码表示,并作为整个 JWT 的第二部分。载荷的一个示例:
{
 "sub": "1234567890",
 "name": "John Doe",
 "iat": 1516239022
}
 签名(Signature):签名是对头部和载荷进行签名的结果,用于验证 JWT 的完整
性和真实性。
 签名生成方式:将头部和载荷进行 Base64Url 编码后拼接在一起,然后使
用指定的加密算法(如 HMAC、RSA)进行签名,将生成的签名添加到 JWT 中。
2.1 头部
2.1.1 alg:

​ 说明这个 JWT 的签名使用的算法的参数,常见值用 HS256(默认),HS512 等,也可以为

​ None。HS256 表示 HMAC SHA256。

2.1.2 type:

​ 说明这个 token 的类型为 JWT

2.2 payload
载荷就是存放有效信息的地方。这个名字像是特指飞机上承载的货品,这些有效信息包含三个部分
	* 标准中注册的声明
	* 公共的声明
	* 私有的声明
	
标准中注册的声明(建议但不强制使用):
	* iss:jwt签发者
	* sub:jwt所面向的用户
	* aud:接收jwt的一方
	* exp:jwt的过期时间,这个过期时间必须要大于签发时间
	* nbf:定义在什么时间之前,该jwt都是不可用的.
	* iat:jwt的签发时间
	* jti:jwt的唯一身份标识,主要用来作为一次性token,从而回避重放攻击。
2.3 签名
服务器有一个不会发送给客户端的密码(secret),用头部中指定的算法对头部和声明的内容用;

此密码进行加密,生成的字符串就是 JWT 的签名

3 漏洞复现

3.1 攻击点token(第三关)
头部的alg算法HS256进行设置none【没有】

改前:
{
 "alg": "HS256",
 "typ": "JWT"
}

改后:
{
 "alg": "none",none
 "typ": "JWT"
}

在这里插入图片描述

3.2 对token值base64的加密码方式进行解析加密编码,只能看。
https://jwt.io/

颜色标记对应的头、中、尾,依依对应

在这里插入图片描述

3.3 修改解密后的json,在加密成base64
3.3.1 base64加密方式解密网
https://www.bejson.com/enc/base64/   # base64加密网

https://jwt.io/   # base64加密方式查看

在这里插入图片描述

在这里插入图片描述

ewogICJpYXQiOiAxNjk1NDcwNTM4LAogICJhZG1pbiI6ICJ0cnVlIiwKICAidXNlciI6ICJhZG1pbiIKfQ

在这里插入图片描述

3.3.2 将获取修改后的base64,放入解读加密方式
https://jwt.io/   # base64加密方式查看

在这里插入图片描述

3.3.3 最后组成base64,后面的点一定有,后台是根据点分隔取值
ewogICJhbGciOiAibm9uZSIKfQ.ewogICJpYXQiOiAxNjk1NDcwNTM4LAogICJhZG1pbiI6ICJ0cnVlIiwKICAidXNlciI6ICJhZG1pbiIKfQ.
3.4 使用bp抓包,将加密后的base64替换token值,send发送

​ 提示:恭喜你,成功完成任务

在这里插入图片描述

4 第四关

​ 修改 payload 数据,admin 修改为 true,将加密方式修改为 none。

5 第五关

密码爆破

在这里插入图片描述

修改 exp 有效时间
爆破秘钥
hashcat -m 16500 jwt.txt -a 3 -w 3 1.txt
-m 16500 这里的 16500 对应的就是 jwt 的 token 爆破;
-a 3 代表蛮力破解
-w 3 可以理解为高速破解,就是会让桌面进程无响应的那种高速
jwt.txt 是我把题目要求破解的 token 保存到的文件
pass.txt 密码字典

6 第7关

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

深度学习——深度卷积神经网络(AlexNet)

深度学习——深度卷积神经网络(AlexNet) 文章目录 前言一、学习表征二、AlexNet实现2.1. 模型设计2.2. 激活函数2.3. 容量控制与预处理2.4. 训练模型 总结 前言 在前面学习了卷积神经网络的基本原理,之后将继续学习现代卷积神经网络架构。而本章将学习其…

上网冲浪发现多处XSS

突然的发现 今天上网冲浪,突然想起来有一种神器,叫废话生成器,之前是在哪里下了个软件玩了一下,然后就给删除了,因为我觉得这个软件不过就是调用了一个web接口实现的,一个网页能解决的事还要我下一个软件。…

PR2023中如何导入字幕

PR中如何导入字幕 方法一: 点开文本,字幕,新建字幕分段(点击右上角…三个点) 键入调整内容 方法二 点开基本图形,编辑,调整,拖动位置。

移动设备管理对企业IT 安全的增强

移动设备管理 (MDM) 是通过定义策略和部署安全控制(如移动应用程序管理、移动内容管理和条件 Exchange 访问)来管理移动设备的过程。 完整的MDM解决方案可以管理在Android,iOS,Windows,macOS&a…

23上半年下午题

针对哔哩哔哩视频做的笔记,源地址在此 点这里 第一大题题目 第一大题解答 前两题比较简单,按照说明仔细填写即可。 第三问可以从以下几个方面入手, 1、上下文数据流图和0层数据流图是否平衡相对应 2、一个加工至少有一个输入和输出流 3、…

灵沐V3.01微信资源类小程序源码-支持流量主

时隔几年,终于推出全新升级版的灵沐V3.01流量主变现小程序 该版本支持微信、QQ和抖音,经过全局的UI设计升级,保持了主打功能——资源下载激励视频变现的特点 此外,我们还新增了Doc文档模式,可适用于文章;…

Linux内核的.config 配置文件和defconfig 配置文件

Linux 内核可以通过输入“make menuconfig”来打开图形化配置界面,menuconfig 是一套图形化的配置工具 一、图形化界面的操作 menuconfig 图形化的配置工具需要 ncurses 库支持。ncurses 库提供了一系列的 API 函数供调用者生成基于文本的图形界面,因此…

数据保护双保险,一文读懂NVMe协议中的Get LBA Status功能

就在前不久,我们发布了全新一代PCIe 5.0企业级NVMe SSD——PBlaze7 7940。与上一代PCIe 4.0产品相比,其综合性能有着超过100%的提升,增添了很多新的功能以满足企业级客户多样化的产品需求。其中一项新的功能便是我们今天谈论的主角——Get LB…

Mysql中日期相关的函数

Mysql中日期相关的函数 时间戳转变成日期datetime格式的函数 FROM_UNIXTIME(时间戳),如下图: 获取datetime类型的月份和年份的函数 month获取月份,如下图: year获取年份,如下图: 给特定日期加一个月…

2023年四川省安全员B证证模拟考试题库及四川省安全员B证理论考试试题

题库来源:安全生产模拟考试一点通公众号小程序 2023年四川省安全员B证证模拟考试题库及四川省安全员B证理论考试试题是由安全生产模拟考试一点通提供,四川省安全员B证证模拟考试题库是根据四川省安全员B证最新版教材,四川省安全员B证大纲整理…

软件测试基础知识整理(详细版)

一、软件测试概述 1、软件缺陷 软件缺陷:又称之为“Bug”。即计算机软件或程序中存在的某种破坏正常运行能力的问题、错误,或者隐藏的功能缺陷。 缺陷的表现形式: 软件没有实现产品规格说明书所要求的功能模块; 软件中出现了产…

C++对象模型(16)-- 构造函数语义学:临时对象

临时对象是栈上的没有名字的对象,它在源码中是不可见的,是编译器偷偷摸摸在背后干的。 比如下面的代码就会产生临时对象: int i 1;// 这里的 i 会产生临时对象,这里的临时对象是在系统中产生,代码中看不见的 // 首先…

Deep Joint Demosaicking and Denoising

Abstract 去马赛克和去噪是数字成像流程的关键第一阶段,但它们也是一个严重不适定的问题,从单个噪声测量中推断出每个像素的三个颜色值。早期的方法依赖于手工制作的滤波器或先验,并且在硬情况下(例如摩尔纹或薄边缘)…

Bootstrap的导航栏设计相关知识

Bootstrap的导航栏设计相关知识 目录 01-基础知识02-最基本的导航栏设计例子03-带下拉菜单的导航04-在导航栏中添加表单元素05-固定导航栏的位置(如固定到顶部和底部)06-设计导航栏的颜色和文本颜色 01-基础知识 导航栏是网页设计中不可缺少的部分,它是整个网站的…

ABB变频器使用PROFINET IO通信模块时的激活方法

ABB变频器使用PROFINET IO通信模块时的激活方法 ABB传动通讯总线适配器的激活(ACS380): 首先,如下图所示,要采购并安装PROFINET IO总线通信模块(我这里支持3种通信协议,大家在实际使用时,用到哪种就购买哪种即可), 如下图所示,进入参数设置, 如下图所示,进入“完…

如何使用Python抓取PDF文件并自动下载到本地

目录 一、导入必要的库 二、发送HTTP请求并获取PDF文件内容 三、将PDF文件内容写入到本地文件中 四、完整代码示例 五、注意事项 六、错误处理和异常处理 七、进一步优化 总结 在Python中,抓取PDF文件并自动下载到本地需要使用几个不同的库。首先&#xff0…

EV SSL数字证书贵吗

EVSSL证书通常适用于具有高需求的网站和企业,特别是涉及在线交易、金融服务、电子商务平台等需要建立用户信任的场景。大型企业、金融机构、电子商务平台等可以受益于使用EV证书来提升品牌形象和安全性。 申请EVSSL证书(Extended Validation SSL certifi…

复制粘贴(二):操作剪贴板 navigator.clipboard

使用 navigator.clipboard 可以随时获取剪贴板对象&#xff08;也就是说&#xff0c;在 copy/paste 事件外也可以用&#xff09; 但是&#xff0c;此操作必须用户允许&#xff1a; readText readText() 获取剪贴板中的文本内容 <!DOCTYPE html> <html><head&…

java: 错误: 无效的源发行版:17

原因分析&#xff1a; 这个错误表明你的Java开发环境不支持Java 17的源发行版。这可能是因为你的JDK&#xff08;Java Development Kit&#xff09;版本过低&#xff0c;不支持Java 17的特性。 以下是解决此问题的一些步骤&#xff1a; 检查你的JDK版本&#xff1a;在命令行…

java影院管理信息系统设计参考学习

系统设计&#xff1a; 1.1功能结构 为了更好的去理清本系统整体思路&#xff0c;对该系统以结构图的形式表达出来&#xff0c;设计实现该影院系统的功能结构图如下所示&#xff1a; 图1-1 系统总体结构图 1.2数据库设计 1.2.1数据库E/R图 ER图是由实体及其关系构成的图&…