前言
本文介绍 yakit 上关于JWT安全测试的插件。
JWT 介绍
JWT(JSON Web Token)是一种用于身份认证和授权的开放标准,它通过在网络应用间传递被加密的JSON数据来安全地传输信息使得身份验证和授权变得更加简单和安全
JWT 通常由三部分组成,分别是头部(Header)、载荷(Payload)和签名(Signature),它们之间用点(.)分隔,例如:xxxxx.yyyyy.zzzzz
。
- 头部:一般包含两部分信息,一是令牌的类型,即JWT;二是所使用的签名算法,如HS256(HMAC with SHA-256)、RS256(RSA with SHA-256)等。它会被编码为一个 JSON 对象,然后进行 Base64 编码。
- 载荷:是 JWT 的核心部分,包含了实际需要传递的数据,也被编码为 JSON 对象后进行 Base64 编码。这些数据可以是用户的身份信息、权限信息、过期时间等。其中,有一些预定义的字段,如iss(签发者)、exp(过期时间)、sub(主题)等。
- 签名:是通过对头部和载荷进行签名得到的,用于验证令牌的完整性和真实性。签名的过程使用了头部中指定的签名算法和一个只有服务器端知道的密钥。
yakit 的 JWT 插件
- JWT 解码
- JWT None算法生成
- JWT 弱口令测试
其他的算是其他组件或者框架的历史漏洞,这里不做介绍。
设置 JWT 插件合集,方便自己快速使用
选择自定义菜单
添加菜单,将插件添加进去
JWT 解码
从 https://jwt.io/ 拿默认的JWT编码
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.KMUFsIDTnFmyG3nMiGM6H9FNFUROf3wh7SmqJp-QV30
JWT 解码,顺便将三部分进行解析
JWT None算法生成
查看结果
eyJhbGciOiJOb25lIiwidHlwIjoiSldTIn0.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.
修改了第一部分,第三部分为空
JWT Token 弱口令测试
输入jwt和jwt密钥字典
内置字典如下
发现弱口令
常见 JWT 密钥字典
- https://github.com/wallarm/jwt-secrets/blob/master/jwt.secrets.list
扩展阅读
- 从一个奇葩的JWT解密问题到Github 10K star组件的设计缺陷!!! https://mp.weixin.qq.com/s/hscF3h-ae9Qt6B81etdCfg
- JWT渗透姿势一篇通 https://xz.aliyun.com/news/12352
- 一次完整的JWT伪造漏洞实战案例 https://mp.weixin.qq.com/s/wySsC04H6kpUAcEYgbMqBw