ctfshow—jwt详解

本文详细阐述了JWT(JSON Web Token)在安全方面的漏洞,包括无加密、算法篡改、弱口令、爆破和公私钥泄露等问题,并提供了攻击者的利用手段和防御建议。针对这些问题,攻击者可以修改JWT的签名算法、利用泄露的公私钥伪造令牌,甚至进行密钥混淆攻击。防御措施包括限制算法使用、加强密钥管理和提高签名算法安全性。

web345(无加密)

进入后F12,发现提示/admin

要注意使用 url 访问网页时
/admin	表示访问 admin.php 文件
/admin/	表示访问 admin/目录下的文件,默认是 index.php
很像文件夹,所以此处应该访问 /admin/

查看cookie

eyJhbGciOiJOb25lIiwidHlwIjoiand0In0.W3siaXNzIjoiYWRtaW4iLCJpYXQiOjE2MzI0OTc1MDksImV4cCI6MTYzMjUwNDcwOSwibmJmIjoxNjMyNDk3NTA5LCJzdWIiOiJ1c2VyIiwianRpIjoiMmUyODkyOTBkODdiZmRmN2UzNjI1NjU0MjJkMjQzYTcifV0

利用https://jwt.io/解码

image-20210924234054465

alg为None,说明无加密,直接修改sub为admin,base64编码后传入cookie,访问/admin/即可

web346(修改签名算法)

JWT 支持将算法设定为 “None”。如果“alg” 字段设为“ None”,那么签名会被置空,这样任何 token 都是有效的。 设定该功能的最初目的是为了方便调试。但是,若不在生产环境中关闭该功能,攻击者可以通过将 alg 字段设置为 “None” 来伪造他们想要的任何 token,接着便可以使用伪造的 token 冒充任意用户登陆网站。

老规矩,看cookie

{
   
   
  "alg": "HS256",
  "typ": "JWT"
}
{
   
   
  "iss": "admin",
  "iat": 1632670820,
  "exp": 1632678020,
  "nbf": 1632670820,
  "sub": "user",
  "jti": "147cc3b129a041cdd38e3f127680d1e4"
}

将 Header 中的加密算法改为 none,利用python脚本

import jwt

# payload
token_dict = {
   
   
  "iss": "admin",
  "iat"
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Snakin_ya

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值