JWT介绍

什么是JWT?

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

JWT的优点

1.JWT可以进行跨语言支持的,如JAVA,JavaScript,NodeJS,PHP等很多语言都可以使用。

2.JWT可以在自身存储一些其他业务逻辑所必要的非敏感信息。

3.JWT结构简单,字节占用很小,便于传输。

4.JWT不需要在服务端保存会话信息,易于应用的扩展。

5.可扩展性好, 应用程序分布式部署的情况下,session需要做多机数据共享,jwt不需要。

6.无状态的jwt不在服务端存储任何状态。

JWT的缺点

1.JWT包含认证信息,因此一旦信息泄露

,任何人都可以获得令牌的所有权限。

2.JWT不建议使用HTTP协议来传输代码,而是使用加密的HTTPS协议进行传输。

3.安全性低, 由于jwt的payload是使用base64url编码的,可以直接解码,因此jwt中不能存储敏感数据。而session的信息是存在服务端的,相对来说更安全。

4.性能比较差, jwt太长。由于是无状态使用JWT,所有的数据都被放到JWT里,如果还要进行一些数据交换,那载荷会更大,经过编码之后导致JWT非常长。

JWT的基本结构

一般是分为三个字符串的,分别为头部、载荷、签名,中间用.隔开:

(1)Header:加密算法与Token类型;

(2)Payload:用户信息和附加信息的声明,一般是Json类型的键值对;

(3)Signature:对前两个部分的签名,其中包含了base64加密后的Header、base64加密后的Payload、签名加密算法私钥。

JWT漏洞利用工具

https://jwt.io/ JWT专用的解码网站

https://tooltt.com/jwt-decode/ JWT Token解析解码工具

https://github.com/brendan-rius/c-jwt-cracker jwt爆破工具

https://github.com/ticarpi/jwt_tool jwt综合工具

python的pyjwt库

实例

靶场地址:https://authlab.digi.ninja/

敏感信息泄露(Leaky JWT)

上边提供的是加密的JWT的token,利用解密的网站进行解密

https://tooltt.com/jwt-decode/

发现账号和密码,密码是经过MD5加密的,拿去MD5解密

拿到用户名和密码

复制代码
joe/Password1
空加密算法破解JWT(JWT None Algorithm)

JWT一般是几种加密算法进行签名,但是有的服务端也可以接受none(空加密算法)进行加密,在burp里边有一个Json web Token Attacker插件,可以使用空加密算法,下载安装

看一下token抓包,可以看到使用user登陆成功了

可以看到用户名和等级为robin,user

修改了用户发现是不允许的认证方式

可以在插件里边设置算法为None发现admin权限登陆成功

相关推荐
爱编程的小吴2 小时前
华为云部署Web平台渗透测试全流程计划
web安全·华为云
网安INF2 小时前
电子邮件安全协议详解
网络·网络协议·安全·网络安全
Hi, how are you2 小时前
GyAn数字资产守护系统
python·安全·http·网络安全·信息与通信
乾元3 小时前
红队 / 蓝队:用 AI 自动生成攻击场景并评估防御效果——从“安全演练”到“可计算的网络对抗系统”
运维·网络·人工智能·网络协议·安全·web安全·架构
半路_出家ren3 小时前
Python操作MySQL(详细版)
运维·开发语言·数据库·python·mysql·网络安全·wireshark
计算机程序设计小李同学16 小时前
动漫之家系统设计与实现
java·spring boot·后端·web安全
网安INF16 小时前
SSL/TLS密钥派生机制与安全攻防体系深度解析
网络·安全·网络安全·密码学·ssl
一岁天才饺子18 小时前
Redis漏洞复现
redis·web安全·网络安全
脆皮瞎20 小时前
内网横向移动 ?
网络安全·php·内网穿透