JWT漏洞练习
在这个练习环境中,你将学习如何识别和利用JWT相关的漏洞。每个挑战都模拟了真实世界中的场景。
挑战1:算法降级攻击
简单目标:通过修改JWT的算法从RS256降级到none来绕过验证。
// 原始JWT
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.
尝试将header中的"alg"值从"RS256"改为"none"。
挑战2:密钥混淆攻击
中等目标:利用公钥作为HS256密钥来伪造JWT。
// 公钥
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA...
-----END PUBLIC KEY-----
使用公钥作为HS256算法的密钥来签名JWT。
挑战3:密钥破解
困难目标:通过暴力破解获取JWT的签名密钥。
// 目标JWT
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
使用john或hashcat工具进行暴力破解。密钥是一个常见的英文单词。