jwt 安全

参考:

https://github.com/ticarpi/jwt_tool/wiki/Attack-Methodology

https://jwt.io/introduction

https://zhuanlan.zhihu.com/p/93129166

https://book.hacktricks.xyz/pentesting-web/hacking-jwt-json-web-tokens

简介

jwt ,全称 json web token ,以 json 对象的形式安全的传递数据。因为这些信息被数字签名,所以保证了其完整性。

使用场景:授权(通常在认证成功后返回,跟 sessionid 类似)、信息交换。

结构:Header.payload.signature

image-20210802191936641

安全测试

用到的工具:

  1. 在线解码、编码:https://tooltt.com/jwt-decode/ https://tooltt.com/jwt-encode/
  2. 本地工具:https://github.com/ticarpi/jwt_tool
可能存在的问题
  1. 服务端可能不检查签名。尝试直接更改 payload 部分,若响应和未更改之前相同,则服务端未检查。
  2. 若采用对称加密算法,则可以尝试暴力破解获取 secret。
  3. jwt token 的来源,如果第一次出现的地方是在客户端的请求,说明 secret key 在客户端代码里。
  4. CVE-2015-9235 。将 header 中的 alg 更改为 none ,jwt 库就不会检验签名。jwt_tool.py -X a
  5. CVE-2016-5431。若采用非对称加密(RAS 等),尝试将其修改为对称加密算法(HS256、HS512 等)。并将服务端的公钥作为 secret 。jwt_tool.py -X k
  6. CVE-2018-0114。伪造密钥。如果 header 中存在 jwk ,则可以尝试利用。
  7. CVE-2020-28042。将签名删除,检测能否成功。jwt_tool.py -X n
  8. 如果header 中有 jku、kid、x5u、x5c、JTI ,可以参考进行利用。https://book.hacktricks.xyz/pentesting-web/hacking-jwt-json-web-tokens
原文地址:https://www.cnblogs.com/starrys/p/15110078.html