🪡JWT渗透(json web token)
2023-1-27
| 2023-2-6
0  |  0 分钟
type
status
slug
tags
category
icon
password
Property
Feb 6, 2023 06:33 AM
date
summary

简介

在最近的渗透中是不是会遇到使用JWT技术的网站,这里就来总结一下JWT上一些常见的攻击手法吧。
notion image

JWT特征

JWT是由三段信息构成的,将这三段信息文本用.链接一起就构成了Jwt字符串。就像这样:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcE
第一部分我们称它为头部(header),第二部分我们称其为载荷(payload, 类似于飞机上承载的物品),第三部分是签证(signature).
可以通过这个网站编解码jwt的payload等https://jwt.io/
 

攻击手法

checklist

 
notion image

敏感信息泄露

因为header和payload都是base64编码后得到的所以我们可以轻松的到编码前的信息内容,而这之中可能就存在敏感信息

修改签名算法

因为第一部分是用于指明使用的算法,如果服务器配置不当,就会导致信任客户端传递过来的指定算法例如(none),服务器会在 JWT 中删除相应的签名数据(这时,JWT 就会只含有头部 + ‘.’ + 有效载荷 + ‘.’),然后将其提交给服务器

JWT密钥爆破

因为JWT算法是公开的,如果服务器设置的密钥比较简单,这时候我们可以尝试爆破
爆破字典
 
 
或者尝试使用Google colab爆破效率奇高
 

jwk注入

A JWK (JSON Web Key) is a standardized format for representing keys as a JSON object.
You can see an example of this in the following JWT header:
 
就是服务器信任客户端传递的jwk来验证签名

jku注入

和上面类似信任了客户端传递的其他jwk,只不过这种是使用url传递方式
 

文件密钥注入

这种漏洞就是如果服务器kid为某个密钥文件名,可以将其指定到/dev/null空密钥然后自己再用空密钥签名
使其指定到空文件
notion image
 
创建空的对成加密密钥
notion image
 
 
重新签名发送

练习环境

python编码jwt

 

参考

 
技术分享
  • authorization
  • 某内部攻防靶场经验分享ios微信-Mac渗透
    目录