JWT 安全
免责声明
本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.
关于 JWT 认证的基本知识点可见笔记 认证 & 授权
相关文章
Tips
搜索 JWT 的正则,来自 以下正则来自 以下内容来自 [ ticarpi/jwt_tool ]
[= ]ey[A-Za-z0-9_-]*\.[A-Za-z0-9._-]* 稳定的 JWT 版本
[= ]ey[A-Za-z0-9_\/+-]*\.[A-Za-z0-9._\/+-]* 所有 JWT 版本(可能误报)
python快速生成 jwt
import jwt
jwt.encode({'字段1':'test','字段2':'123456'},algorithm='none',key='')
相关工具
JSON Web Tokens - jwt.io - 在线的 jwt 生成
ticarpi/jwt_tool - 一个用于验证,伪造和破解JWT(JSON Web令牌)的工具包。
ozzi-/JWT4B - 即时操作 JWT 的 burp 插件
3v4Si0N/RS256-2-HS256 - JWT 攻击,将算法由 RS256 变为 HS256
x1sec/gojwtcrack - Fast JSON Web Token (JWT) cracker written in Go
gojwtcrack -t token.txt -d ~/SecLists/Passwords/xato-net-10-million-passwords-1000000.txt
aress31/jwtcat - A CPU-based JSON Web Token (JWT) cracker and - to some extent - scanner.
ahwul/jwt-hack - jwt-hack is tool for hacking / security testing to JWT. Supported for En/decoding JWT, Generate payload for JWT attack and very fast cracking(dict/brutefoce)
hashcat
hashcat -m 16500 hash.txt pass1.txt
攻击思路
爆破 jwt 密钥
通过工具爆破目标 jwt 密钥,尝试伪造具备有效签名的新 JWT 值
加密算法置空
捕获 JWT.
修改 algorithm 为
None
.在正⽂中⽤任何你想要的内容改变原本的内容,如: email: attacker@gmail.com
使⽤修改后的令牌发送请求并检查结果。
篡改加密算法
捕获 JWT token.
如果算法是 RS256,就改成 HS256,然后⽤公钥签名(你可以通过访问 jwks Uri (https://YOUR_DOMAIN/.well-known/jwks.json) 来获得,⼤多数情况下是该网站 https 证书的公钥)。
使⽤修改后的令牌发送请求并检查响应。
检查服务器端会话终⽌是否正确 (OTG-SESS-006)
检查应用程序是否使用 JWT 令牌进行认证。
如果是,登录到应用程序并捕获令牌。(⼤多数网络应⽤都会将令牌存储在浏览器的本地存储中)
现在注销应用程序。
用之前捕获的令牌向权限接口发出请求。
有时,请求会成功,因为 Web 应用程序只是从浏览器中删除令牌,而不会在后端将令牌列⼊黑名单。