技术社区
安全培训
技术社群
积分商城
先知平台
漏洞库
历史记录
清空历史记录
相关的动态
相关的文章
相关的用户
相关的圈子
相关的话题
注册
登录
一文学习JWT造成的各种安全漏洞利用手法(二)
真爱和自由
WEB安全
195浏览 · 2025-03-06 17:57
返回文档
一文学习JWT造成的各种安全漏洞利用手法
前言
上次写了我们基础的类型,这次是更复杂的JWT攻击手法
无密钥算法混淆
这个相比于上一个就没有什么泄露了,不过我们可以使用工具去
图片加载失败
而工具的作用就是
图片加载失败
首先我们需要获取两个 jwt
登录获得的 jwt
我退出再次登录获取的 jwt
然后按照教程
结果如下
然后就是一个一个尝试了,但是因为
图片加载失败
bp已经说了,我们就不需要再去尝试了
然后之后的步骤和上一个一模一样的,就不再去弄了
jwk 头部注入
漏洞基础
什么是 jwk 呢?上面已经介绍过了
不过这里还是需要把基础的知识了解了解才能明白漏洞的原理
JWK 注入漏洞通常发生在服务器错误地配置了公钥验证机制时,特别是在服务器不检查公钥来源或没有正确实现公钥白名单时。具体而言,服务器有时会错误地信任 JWT 中包含的公钥,而没有对其进行额外的验证或严格的来源检查。
JWK(JSON Web Key) 参数是 JWS 规范中允许的一个字段,它可以用于在 JWT 头部嵌入公钥。服务器在验证签名时,会从 JWT 的 header 获取 jwk,并使用其中的公钥进行签名验证。然而,如果服务器未正确实施验证逻辑(如不检查 jwk 公钥的合法性或来源),攻击者可能利用这个缺陷执行恶意操作。
什么意思呢,就是公钥我们是可以控制的,我们知道 RSA 的验证是一个密钥对,那么我们只需要自己生成一个公私钥
我们使用自己的私钥去验证就 ok 了
漏洞利用
首先我们使用插件生成一个 RSA 的密钥
图片加载失败
然后我们获取一个 jwt
同样的把我们的 sub 改为 admin
图片加载失败
然后我们使用刚刚的 RSA 密钥来 jwk 注入
这个工具可以一把梭哈
图片加载失败
点击攻击后我们就可以直接访问 admin 界面了
图片加载失败
jku 头部注入
漏洞基础
漏洞原理和上面的几乎一样,不过是获取密钥的地方变了,上一个是直接通过 jwk 头去获取,而这个是通过 jku 头
JKU(JSON Web Key Set URL) 是 JWT 头部中的一个字段,指向一个 URL,该 URL 指定了存储用于验证 JWT 签名的公钥集合(JWK Set)。与 jwk 参数直接嵌入公钥不同,jku 允许客户端(或服务器)通过 HTTP 请求从指定的 URL 获取公钥。攻击者可以通过操控 jku 参数,利用该漏洞注入恶意的公钥来绕过 JWT 验证。
比如一个例子
漏洞利用
靶场
https://0a31002a040dccb682221ff100ba006d.web-security-academy.net/
图片加载失败
图片加载失败
我们可以把这个作为我们利用的点,这里放入我们的 jwk
首先是生成一个 jwk
还是一样的步骤,生成一个 RSA
图片加载失败
然后复制 jwk
放入我们的 exploit 的 body,但是需要加入 key 头
我们可以看看 jwk 的标准形式
图片加载失败
保存成功后我们修改 jwt
图片加载失败
需要 kid 和自己远程 jwk 一致
然后使用刚刚的生成的密钥签名就 ok 了
kid 头部注入
漏洞基础
在 JWS(JSON Web Signature)规范中,kid(Key ID)字段没有严格的格式要求。它只是一个由开发人员选择的任意字符串,可以是 UUID、文件名、数据库条目的标识符,或者任何其他字符串。由于 kid 没有约定的格式,攻击者可以利用这一点,尝试通过特定的路径或标识符来影响服务器的密钥验证过程,进而发起攻击。
原理就是我们可以指定 kid 参数来指定加密的验证密钥,而且这个参数是没有严格的格式要求的,还有一个很重要的一点就是可以指定文件内容作为验证密钥
而 linux 的/dev/null 文件很特殊,是存在且为空的
图片加载失败
所以我们可以以这个文组为验证密钥,采用对称加密的算法的时候,我们只需要知道就可以尝试进行攻击
漏洞利用
https://portswigger.net/web-security/jwt/lab-jwt-authentication-bypass-via-kid-header-path-traversal
图片加载失败
这次很简单
先生成一个 null 的验证密钥
图片加载失败
然后抓一个 jwt 出来
图片加载失败
然后使用刚刚的密钥签名方便认证
图片加载失败
成功
敏感信息泄露
一般我们的 jwt 都是存放用户的 id 信息,可是有一些 jwt 存放的是我们用户的相关的敏感信息,而 jwt 是可以 base64 解码获取部分信息的
漏洞利用
我们可以访问
https://authlab.digi.ninja/Leaky_JWT
图片加载失败
我们将获取的 JWT 解码
图片加载失败
可以发现获取了 admin 的账号和密码
我们尝试登录
图片加载失败
但是登录失败了,怀疑 password 应该是 md5 编码
在线网站解密
图片加载失败
获得了密码
图片加载失败
登录成功了
密钥硬编码类
这个其实是比较验证的一个漏洞,比如 NacosJWT 密钥硬编码漏洞
nacos 通过 jwt 进行身份认证,由于配置文件中存在默认 jwt 签名密钥,由于开发者安全意思不强,可能并未更换该签名密钥,导致可伪造 jwt 从而绕过身份认证。
0
人收藏
0
人喜欢
转载
分享
0
条评论
某人
表情
可输入
255
字
评论
没有评论
发布投稿
热门文章
1
2025ISCC练武区域赛和决赛pwn以及擂台pwn合集
2
通过Elastic EDR看smbexec并进行二次开发Bypass
3
php代码审计篇 - 信呼OA 前台注入分析一
4
D3CTF-d3kshrm(预期&非预期)题解
5
Tomcat解析XML引入的新颖webshell构造方式
近期热点
一周
月份
季度
1
2025ISCC练武区域赛和决赛pwn以及擂台pwn合集
2
通过Elastic EDR看smbexec并进行二次开发Bypass
3
php代码审计篇 - 信呼OA 前台注入分析一
4
D3CTF-d3kshrm(预期&非预期)题解
5
Tomcat解析XML引入的新颖webshell构造方式
暂无相关信息
暂无相关信息
优秀作者
1
T0daySeeker
贡献值:28700
2
一天
贡献值:19800
3
1674701160110592
贡献值:18000
4
1174735059082055
贡献值:15000
5
Yale
贡献值:14000
6
LeeH
贡献值:10000
7
MeteorKai
贡献值:9000
8
姓*户
贡献值:8600
9
Arcueid
贡献值:8000
10
熊猫正正
贡献值:8000
目录
一文学习JWT造成的各种安全漏洞利用手法
前言
无密钥算法混淆
jwk 头部注入
漏洞基础
漏洞利用
jku 头部注入
漏洞基础
漏洞利用
kid 头部注入
漏洞基础
漏洞利用
敏感信息泄露
密钥硬编码类
转载
标题
作者:
你好
http://www.a.com/asdsabdas
文章
转载
自
复制到剪贴板
没有评论