经验分享 | 一文学会jwt劫持

2024-08-17 175 0

jwt是什么

JWT全称是JSON Web Token,如果从字面上理解感觉是基于JSON格式用于网络传输的令牌。实际上,JWT是一种紧凑的Claims声明格式,旨在用于空间受限的环境进行传输,常见的场景如HTTP授权请求头参数和URI查询参数。JWT会把Claims转换成JSON格式,而这个JSON内容将会应用为JWS结构的有效载荷或者应用为JWE结构的(加密处理后的)原始字符串,通过消息认证码(Message Authentication Code或者简称MAC)和/或者加密操作对Claims进行数字签名或者完整性保护。

看不懂没关系,简单理解: 鉴权方式

环境搭建

# OWASP Juice Shop靶场

配置: kali docker

# 拉取Owasp juice shop容器
docker pull bkimminich/juice-shop

# 启动容器
docker run -d -p 3000:3000 bkimminich/juice-shop

搭建好访问 ip:3000

创建一个账号 [email protected] / 123456

经验分享 | 一文学会jwt劫持插图

经验分享 | 一文学会jwt劫持插图1

jwt三部分

jwt组成的三部分:头部,载荷,签名

头部(HEADER)

一个json字符串,包含当前令牌名称,以及加密算法

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

使用base64加密后

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9

载荷(PAYLOAD)

一个json字符创,包含一些自定义的信息

{"sub":"1234567890","name":"John Doe","admin":true}

使用base64加密

eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9

签名(VERIFY SIGNATURE)

由头部信息使用base64加密之后,拼接上载荷使用base64加密之后的部分,在加上当前的密钥,进行头部中的加密算法进行加密

header (base64后的)

payload (base64后的)

secret

这个部分需要base64加密后的header和base64加密后的payload使用.连接组成的字符串,然后通过header中声明的加密方式进行加盐secret组合加密,然后就构成了jwt的第三部分。

TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ

将这三部分用.连接成一个完整的字符串,构成了最终的jwt:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ

原理

弄清楚jwt的组成部分后我们知道了

1.加密方法是base64编码后的,我们可见,可操作
2.载荷数据是base64编码后的,也可以操作
3.签名是密钥加密的,我们不知道密钥,无法操作

ok,问题很明确了,目前卡住我们的只有签名,有什么办法能绕过签名?

答案很明确: 让签名为空即可,首先我们已知签名的形成依赖于头部的加密算法,密钥,以及载荷的数据而形成的,而因为密钥我们无从得知,导致无法进行加密,载荷内容就算可以修改也不被后面的签名承认,所以密钥以及载荷的数据都不是入手点,那要怎样修改加密算法才能让签名为空? 答案是,当不存在加密算法,也就是加密方式为 None

jwt劫持复现

1.抓取登录包

我们用刚注册的账号登录,抓包,不断放包,找到有Authorization头的请求包

经验分享 | 一文学会jwt劫持插图2


4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

webpack打包站点,js文件名批量获取思路
加密对抗靶场enctypt——labs通关
【论文速读】| 注意力是实现基于大语言模型的代码漏洞定位的关键
蓝队技术——Sysmon识别检测宏病毒
内网渗透学习|powershell上线cs
LLM attack中的API调用安全问题及靶场实践

发布评论