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工具进行暴力破解。密钥是一个常见的英文单词。