WebGoat靶场JWT tokens四五关通关教程(JWT token安全)

WebGoat靶场JWT tokens四五关通关教程

  • 一、JWT tokens 第四关
    • 1.本关要求:尝试更改您收到的令牌,并通过更改令牌成为一个管理用户,一旦您是管理员重置投票
      • 1.1 点击选择用户登录
      • 1.2 点击 reset 抓包分析
      • 1.3 将 token 解密并修改 token
  • 二、JWT tokens 第五关
    • 1.假设我们有以下令牌,尝试找出密钥并提交一个新密钥,用户名更改为 WebGoat
      • 1.1 首先分析一下题目
      • 1.2 将 token 解密观察

一、JWT tokens 第四关

1.本关要求:尝试更改您收到的令牌,并通过更改令牌成为一个管理用户,一旦您是管理员重置投票

1.1 点击选择用户登录

WebGoat靶场JWT tokens四五关通关教程(JWT token安全)_第1张图片

1.2 点击 reset 抓包分析

WebGoat靶场JWT tokens四五关通关教程(JWT token安全)_第2张图片

发现 token
WebGoat靶场JWT tokens四五关通关教程(JWT token安全)_第3张图片

1.3 将 token 解密并修改 token

在jwt 解密网站解密
WebGoat靶场JWT tokens四五关通关教程(JWT token安全)_第4张图片

让后将刚刚提到的两点进行修改,先修改 alg 方式为 none
这里图中 alg 原来的加密方式标错了,是 HS256
WebGoat靶场JWT tokens四五关通关教程(JWT token安全)_第5张图片

修改之后的 base64 值需要将==删除
WebGoat靶场JWT tokens四五关通关教程(JWT token安全)_第6张图片

声明部分的修改跟头部的修改一样
WebGoat靶场JWT tokens四五关通关教程(JWT token安全)_第7张图片

因为加密方式改为了 none,所以签名部分直接留空,但是.要写
所以拼接后的 token 为

ewogICJhbGciOiAibm9uZSIKfQ.ewogICJpYXQiOiAxNjY5MDQwMzE4LAogICJhZG1pbiI6ICJ0cnVlIiwKICAidXNlciI6ICJUb20iCn0.

替换 token
WebGoat靶场JWT tokens四五关通关教程(JWT token安全)_第8张图片

成功重置票数
WebGoat靶场JWT tokens四五关通关教程(JWT token安全)_第9张图片

二、JWT tokens 第五关

1.假设我们有以下令牌,尝试找出密钥并提交一个新密钥,用户名更改为 WebGoat

eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJXZWJHb2F0IFRva2VuIEJ1aWxkZXIiLCJhdWQiOiJ3ZWJnb2F0Lm9yZyIsImlhdCI6MTY2ODE3NjEyNiwiZXhwIjoxNjY4MTc2MTg2LCJzdWIiOiJ0b21Ad2ViZ29hdC5vcmciLCJ1c2VybmFtZSI6IlRvbSIsIkVtYWlsIjoidG9tQHdlYmdvYXQub3JnIiwiUm9sZSI6WyJNYW5hZ2VyIiwiUHJvamVjdCBBZG1pbmlzdHJhdG9yIl19.8QnyWHtsJgvKPAROiFDESES3vSViT_HB2TTreY4rP10

1.1 首先分析一下题目

题目说需要找出密钥,并且用户名更改为 WebGoat,重点就是在找出密钥

1.2 将 token 解密观察

通过jwt 解密网站解密
WebGoat靶场JWT tokens四五关通关教程(JWT token安全)_第10张图片

发现在 header 头部的加密方式还是 HS256,这不是重点
重点在 payload 声明中的 exp 和 username,exp 是 token 过期的时间戳,时间戳需要修改到当前时间之后,也就让它不过期
而 username 就是题目要我们修改的东西,我们需要把 username 修改为 WebGoat

删除编码后的=,得到修改后的 token

eyJhbGciOiJIUzI1NiJ9.ewogICJpc3MiOiAiV2ViR29hdCBUb2tlbiBCdWlsZGVyIiwKICAiYXVkIjogIndlYmdvYXQub3JnIiwKICAiaWF0IjogMTY2ODE3NjEyNiwKICAiZXhwIjogMTcwODE3NjE4NiwKICAic3ViIjogInRvbUB3ZWJnb2F0Lm9yZyIsCiAgInVzZXJuYW1lIjogIldlYkdvYXQiLAogICJFbWFpbCI6ICJ0b21Ad2ViZ29hdC5vcmciLAogICJSb2xlIjogWwogICAgIk1hbmFnZXIiLAogICAgIlByb2plY3QgQWRtaW5pc3RyYXRvciIKICBdCn0.签名

但是因为加密方式还是 HS256 ,我们还需要密钥才能得到签名,所以需要用到一个 github 上的工具jwtcrack在本地暴力破解密钥,用这个工具需要先自己在 github 上下载一个字典

我们将题目给的完整的 jwt-token 复制,并且在工具目录打开 cmd,执行以下命令:

python crackjwt.py JWT 字典.txt

这里我执行的就是

python crackjwt.py eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJXZWJHb2F0IFRva2VuIEJ1aWxkZXIiLCJhdWQiOiJ3ZWJnb2F0Lm9yZyIsImlhdCI6MTY2ODE3NjEyNiwiZXhwIjoxNjY4MTc2MTg2LCJzdWIiOiJ0b21Ad2ViZ29hdC5vcmciLCJ1c2VybmFtZSI6IlRvbSIsIkVtYWlsIjoidG9tQHdlYmdvYXQub3JnIiwiUm9sZSI6WyJNYW5hZ2VyIiwiUHJvamVjdCBBZG1pbmlzdHJhdG9yIl19.8QnyWHtsJgvKPAROiFDESES3vSViT_HB2TTreY4rP10 bible.txt

破解成功:
WebGoat靶场JWT tokens四五关通关教程(JWT token安全)_第11张图片

将密钥 shipping 填入解密网站,然后直接在网站修改 exp 与 username,会自动生成新的 jwt-token

复制左侧生成的 token 直接填入关卡即可成功伪造用户信息
WebGoat靶场JWT tokens四五关通关教程(JWT token安全)_第12张图片

你可能感兴趣的:(安全,java,web安全)