json web token(JWT)绕过

Posted 向阳-Y.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了json web token(JWT)绕过相关的知识,希望对你有一定的参考价值。

前期准备

本次试验用到靶场WebGoat,如何安装WebGoat?


Broken authentication——JWT tokens的第五题,首先随便切换一个用户,例如Tom,再点击删除图标,进行抓包。

抓到的包如下图

将其中的JWT值取出来,放到JWT在线解密平台


这里分为了三个部分,头部,声明,签名(分别对应红、紫、蓝),签名出需要秘钥进行加密,但我们没有秘钥应该如何绕过呢?

JWT绕过

1.将头部信息的alg值改为none,并进行base64加密

2.将声明部分的admin值改为true,也进行base64加密

3.新组合的JWT应该为头部.声明.(因为头部中的加密方式为none,所以签名部分可以舍去),但又由于=号会与url解码产生歧义,所以需要将=号删除,而Base64URL是支持这种写法的

4.最终的JWT值为:

ewogICJhbGciOiAibm9uZSIKfQ.ewogICJpYXQiOiAxNjQ4MjU2NDM3LAogICJhZG1pbiI6ICJ0cnVlIiwKICAidXNlciI6ICJTeWx2ZXN0ZXIiCn0.

5.将新的JWT值放入数据包中进行测试,成功执行

以上是关于json web token(JWT)绕过的主要内容,如果未能解决你的问题,请参考以下文章

什么是 JWT -- JSON WEB TOKEN

JWT--JSON WEB TOKEN

什么是JWT(JSON WEB TOKEN)

什么是 JWT -- JSON WEB TOKEN

JWT(JSON Web Token) 多网站的单点登录,放弃session

JSON Web Tokens 的正确使用