JWT漏洞
本文最后更新于76 天前,其中的信息可能已经过时,如有错误请发送邮件到495896243@qq.com

什么是JWT

JWT: json web token

组成:头部(Header) 声明(Claims) 签名(Signature)

攻击方式:

  •  伪造
    • 无密钥-修改alg,删除签名
    • 有密钥,修改数据后重新加加密
  • 爆破:针对签名进行爆破
  • 配合 JWT数据存在参数传递接受处理过程

检测:JAVAweb Authorization 数据包数据格式

 

 头部(Header)
{
"alg":"HS256",
"typ":"JWT"
}

alg是说明这个JWT的签名使用的算法的参数,常见值用HS256(默认),HS512等,也可以为None。HS256 表示
HMACSHA256。typ说明这个token的类型为JWT。
/声明(Claims)
{
"exp":1416471934,
"user_name":"user",
"scope":[
"read",
"write"
],
"authorities":[
"ROLE_ADMIN",
"ROLE_USER"
],
"jti":"9bc92a44-0b1a-4c5e-be70-da52075b9a84","client_id":"my-client-with-secret"
}
JWT固定参数有:
iss:发行人
exp:到期时间
sub:主题
aud:用户
nbf:在此之前不可用
iat:发布时间
jti:JWTID用于标识该JWT*//
签名(Signature)
服务器有一个不会发送给客户端的密码(secret),用头部中指定的算法对头部和声明的内容用此密码进行加密,生成的字符串就是JWT的签名。
下面是一个用HS256生成JWT的代码例子
HMACSHA256(base64UrlEncode(header)+"."+base64UrlEncode(payload),secret)

Javaweb-身份验证攻击-JWT修改伪造攻击

因为JWT的声明内容变了,因此签名需要重新生成,生成签名又需要密码,因为没有密码,直接去掉签名就可以了,修改头部为None
在HTTP传输过程中,Base64编码中的”=“,”+“,”/”等特殊符号通过URL解码通常容易产生歧义,因此产生了与URL兼容的Base64URL编码

Javaweb-身份验证攻击-JWT密钥爆破攻击

准备好字典,爆破出密钥

Javaweb-身份验证攻击-JWT修改伪造冒充

 

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇