type
status
date
slug
summary
tags
category
icon
password
0x00 JWT简介
json-web-token简称java web令牌,也称作JWT,是一种可以实现跨域身份验证身份的方案,jwt不加密传输数据,但能够通过数据前面验证数据的未被篡改。
JWT的组成由头部header,声明Claims,签名Signature一起组成一个完整的JWT令牌,其中头部和声明由base64加密传输,签名由头部的特殊加密方式加密(例如常见值用 HS256(默认),HS512 等,也可以为 None。HS256表示 HMAC SHA256。)三个部分以英文句号.隔开。
JWT 的内容以 Base64URL 进行了编码
JWT 固定参数有:
iss:发行人
exp:到期时间
sub:主题
aud:用户
nbf:在此之前不可用
iat:发布时间
jti:JWT ID 用于标识该 JWT
0x01 JWT攻击点及检测
攻击点:
1)数据伪造:无密钥,攻击者通过修改声明信息达到绕过
2)数据伪造:有密钥:修改相应数据后重新加密传输
3)签名爆破:利用字典对签名爆破
检测:
1)javaweb应用
2)Authorization
3)数据包存在JWT格式传输
0x02 JWT实战-2020-虎符网络安全赛道-Web-easy_login
题目主干已经存在提示,细心的师傅思路已经打开
注册登录抓取数据包,发现JWT传输
将jwt解密观察
登录进去查看到flag没用权限,需要admin权限
思路就打开,我们需要伪造admin的JWT传输即可
伪造数据头,将加密方式修改为none即为空,注意格式
修改声明,将secretid云 API 密钥修改为空值 "[]",将账户修改为amdin
重新组装JWT令牌,将等于号转化为点,不需要签名,
替换JWT令牌发送
登录后再次抓包获取flag
重点实在JWT的数据伪造修改上面,以及注意修改格式问题
- 作者:告白
- 链接:https://www.gbsec.top/article/JAVA%E5%AE%89%E5%85%A8-JWT%E4%BB%A4%E7%89%8C
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章