Authentication Lab | JWT None Algorithm

news/2024/10/4 8:03:45 标签: 网络安全, 靶场笔记

关注这个靶场的其他相关笔记:Authentication Lab —— 靶场笔记合集-CSDN博客

0x01:JWT None Algorithm 前情提要

本关的考点是 JWT(Json Web Token)漏洞,JWT 是一个用于跨域认证的技术。如果你不了解 JWT,可以参考这篇文章:JWT 详解。

JWT 标准支持不安全的 JWT 算法,适用于不需要加密和签名的场景,例如受信任的服务器之间的通信。在这些情况下,可以通过在 JWT 标头中指定算法 algnone 来省略签名的内容。但经过这种签名的 JWT,是不应该发送给用户使用的。

0x02:JWT None Algorithm Write UP

使用 BurpSuite 自带的浏览器打开靶场(这里主要是为了抓包):

点击页面上的 Validate Token 按钮,获取 JWT 用户信息:

从查询出来的结果包括用户权限来看,本关考验的就是越权。此时回到 BurpSuite,查看之前抓的包:

可以发现,在我们给服务器发送的请求包中除了 Authorization 字段外,并没有什么特殊的内容来表明发送此信息的人的身份,所以,我们有合理的理由来怀疑,这个 Authorization 字段就是我们用户的登录凭证,其中包含了我们用户的个人信息。

在解密 Authorization 中的 JWT 之前,我们看一下上面那个 JS 文件。(你难道不疑惑一下 Authorization 字段中的值是哪里来的吗?)

可以看到,这个 JWT 内容是写在 JavaScript 脚本中直接发送给后端的。并且,除了发送的那条外,还注释了一条信息:

 // JWT with none
 // let token = "eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJsZXZlbCI6InVzZXIiLCJ1c2VyIjoic2lkIn0."

这条信息中的 token 可以让你很快速的联想到 JWT,但是它与普通的 JWT 又不同,它省略了签名部分的内容(这个时候,聪明如你应该已经想到过关的方法了)。

这个发现先按下不表,我们对第 5 条数据包中,我们发给服务端的那个 JWT 进行一个解码(去 JWT 官网即可:JSON Web Tokens - jwt.io):

可以发现,解密后的内容中,JWT 的 Payload 部分正好包含用户名和用户等级。这告诉了我们一个可能,只要能修改 JWT 的值,我们就可能完成越权!

那么怎么修改呢?JWT Payload 部分使用的是 Base64URL 编码,这个很好蒙混过关,可是它还有一个签名字段,用来验证 Header 与 Payload 是否被人为修改过,要是不要这个字段就好了。。。。是的,过关的方式,不要这个字段!

记得,注释掉的那条信息吗:JWT With none,我们将那条 Token 也放到 JWT 官网进行解密:

可以看到,解密后的 alg 的字段为 none。我们知道,在 JWT 中,Header 中的 alg 表名的是签名部分使用的算法,这里值为 none,且其又无签名部分,是否可以说明,只要修改 JWT 的签名算法为 none,就可以绕过签名。

我们将这条签名为 none 的 JWT,发送给服务器身份验证接口进行验证(就是上面那个回显 UserLevel 的数据包):

可以看到,其返回了 'none' signature type is not allowed,说明 algnone 是不允许的,为 none 不允许,那为 None 允许吗?思维打开,我们找到一个 Base64URL 编码的站点,将 JWT 的 Header 部分重新进行编码:

将重构后的 JWT Header 传递给服务端,可以看到,服务端成功完成了回显:

光回显没用,我们还要提权,假设它们站点最高权限是 admin 我们对 JWT 的 Payload 部分也进行修改,看看能不能提权成功:

从回显中可以看到,Level 为 admin,成功提权!

如果此时进一步测试,你还可以发现,当 JWT 签名算法为 None 时,你给其签名部分填任何值,后端都不会对其进行验证(没啥用,帮你省点测试时间):


http://www.niftyadmin.cn/n/5689713.html

相关文章

1.2.2 计算机网络的分层结构(下)

水平视角 YSCS协议(压缩传输协议) 发送方先压缩然后接收方再解压。 为什么要分层?为什么要制定协议? 计算机网路功能负责->采用分层结构,将诸多功能合理地划分在不同层次->对等层之间制定协议,以…

睡眠对于生活的重要性

在快节奏的现代生活中,健康养生不再是遥不可及的概念,而是融入日常每一刻的必需。其中,睡眠作为生命不可或缺的环节,其重要性往往被忽视,实则它是身体修复、能量积蓄的黄金时段。今天,让我们深入探讨“健康…

[C++] 小游戏 征伐 SLG DNF 0.0.1 版本 zty出品

目录 先赞后看 养成习惯 War and Expedition SLG DNF 0.0.1 version 讲人话就是 图标解释: 绿色代表空地,可通过,对应数值 0 蓝色“~ ”为水,不可通过,对应数值 1 棕色“”为桥梁,可通过&#xff0…

【重学 MySQL】五十四、整型数据类型

【重学 MySQL】五十四、整型数据类型 整型类型TINYINTSMALLINTMEDIUMINTINT(或INTEGER)BIGINT 可选属性UNSIGNEDZEROFILL显示宽度(M)AUTO_INCREMENT注意事项 适合场景TINYINTSMALLINTMEDIUMINTINT(或INTEGER&#xff0…

如何解决 Photoshop 中的“暂存盘已满”错误

好久没有用Photoshop了,今天想自己修个图,就启动了一下PS,结果出现一个对话框“不能初始化Photoshop,因为暂存盘已经满”。我一直存在C盘焦虑,常年C盘显示都是红色的。上网一查,发现PS启动时暂存盘的空间是…

计算机毕业设计 基于Python的个性化旅游线路推荐系统的设计与实现 Python+Django+Vue 前后端分离 附源码 讲解 文档

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…

太速科技-FMCJ457-基于JESD204B的2路2Gsps AD 2路2Gsps DA FMC子卡

FMCJ457-基于JESD204B的2路2Gsps AD 2路2Gsps DA FMC子卡 一、板卡概述 该子卡是高速AD9172 DAC和AD9689 ADC的FMC板。为客户提供高达2 GHz 的可用模拟带宽以及 JESD204B 接口,以快速地对各种宽带 RF 应用进行原型制作。 AD芯片AD9689,AD9689-2…

yolov8/9/11模型在中医舌苔分类中的应用【代码+数据集+python环境+GUI系统】

yolov8、9、11模型在中医舌苔分类中的应用【代码数据集python环境GUI系统】 背景意义 目前随着人们生活水平的不断提高,对于中医主张的理念越来越认可,对中医的需求也越来越多。 传统中医的舌诊主要依赖于医生的肉眼观察,仅仅通过这种人工诊…