当前位置: 首页 > news >正文

JWT攻防实战:混淆、破解与红队利用技术详解

JWT攻防实战:混淆、破解与红队利用技术

破解、篡改、利用——JWT不仅是令牌,更是红队的游乐场。

什么是JWT?

JWT(JSON Web Token)是一种紧凑的URL安全方法,用于在双方之间传递声明信息,主要用于无状态认证。JWT通常通过Cookie、HTTP头部或本地存储传递。

JWT包含3个Base64编码部分:

<头部>.<载荷>.<签名>

示例:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFlbm9zaCIsInJvbGUiOiJhZG1pbiJ9.wBwbm_z1gdu9OtUsAoOhPtUp9dJYWpA7U2oPeM4osbQj

结构解析:

  • 头部:指定算法(如HS256)
  • 载荷:包含用户名、角色等声明
  • 签名:确保头部和载荷的完整性

JWT常用于API认证和会话管理。服务器在登录后颁发令牌,客户端在后续请求中携带该令牌。

JWT混淆技术

虽然JWT可通过Base64解码阅读,但攻击者或开发人员可能通过混淆增加复杂性或安全性。

混淆目的:

  • 绕过安全控制
  • 隐藏内部声明(如role=admin)
  • 防止简单检查

常用混淆手法:

# Base64解码示例(仅适用于头部/载荷)
echo '<base64>' | base64 -d# 使用JWT工具包
python jwt_tool.py <token> -d

JWT破解技术

根据实现方式的不同,存在多种JWT破解方法。

HMAC密钥暴力破解(HS256)

当JWT使用弱密钥签名时:

python jwt_tool.py <token> -C -S <字典文件>

常见弱密钥:

  • admin
  • password123
  • jwtsecret

仅适用于对称算法(HS256)且密钥可猜测的情况。

算法混淆攻击:RS256转HS256

如果JWT使用RS256(非对称)签名,但服务器未正确验证算法,可将其改为HS256并用公钥签名:

python jwt_tool.py <token> -X -pk public.pem -A HS256

public.pem文件通常以PEM格式存储公钥。CVE-2018-0114使此攻击广为人知。

none算法攻击

早期JWT库允许使用{"alg":"none"},并完全忽略签名。如果服务器接受此类令牌:

python jwt_tool.py <token> -S none

移除签名后重放令牌,即可实现"登录"。

声明伪造

手动修改载荷为"admin": true,并用破解的密钥重新签名:

python jwt_tool.py <token> -E -pc 'cracked_secret' -A HS256

JWT提取与利用挑战

Cookie存储场景:

  • HTTP请求中难以直接查看
  • 需要BurpSuite拦截提取
  • 脚本需具备Cookie容器感知能力
curl -b "auth=<jwt>" http://target.com/dashboard

本地存储场景:

  • 需要XSS从浏览器窃取
  • 无法通过纯服务端枚举访问

强签名防护:

  • RS256配合密钥轮换
  • HMAC密钥无法破解

短期有效性:

  • 短有效期限制重放攻击
  • 需在有效期内拦截令牌

真实靶场实践

TryHackMe: JWT实验舱

  • 教授none算法攻击、弱密钥破解
  • 修改载荷提升权限
  • 推荐使用BurpSuite的JWT编辑器扩展

HTB: "JWT密钥"挑战

  • 在JavaScript中查找泄露的密钥
  • 修改令牌劫持管理员会话

自建实验环境

  • 使用Node.js的jsonwebtoken库
  • 设置弱密钥测试none算法绕过

防御措施:如何真正保护JWT

始终使用可信库在服务端验证令牌。

快速参考手册

# 解码JWT各部分
jwt_tool.py <token> -d# 破解密钥
jwt_tool.py <token> -C -S rockyou.txt# 尝试none算法
jwt_tool.py <token> -S none# 修改并重新签名
jwt_tool.py <token> -E -pc 'secret' -A HS256

本文原载于 https://aenosh-rajora.gitbook.io,2025年9月13日发布
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)

公众号二维码

公众号二维码

http://www.hskmm.com/?act=detail&tid=18641

相关文章:

  • “中国英伟达”投资人,赚翻了
  • The 3rd UCUP Stage 29: Metropolis(QOJ contest 1913) 总结
  • 空白金兰契的多维解构与实践路径:从价值表征困境到人机共生伦理
  • 2025中国制造企业500强榜单发布
  • 读 WPF 源代码 了解获取 GlyphTypeface 的 CharacterToGlyphMap 的数量耗时原因
  • 张江,首个万亿市值巨头诞生!
  • Java 与智慧交通:车联网与自动驾驶支持
  • 9月26号
  • 初衷的澄明:空白金兰契的深意
  • Aidoku - 专为iOS/iPadOS打造的免费开源漫画阅读器
  • windos的hyper-v安装的宝塔面板,在面板里面点击重启服务器后再也无法启动面板。
  • Obsidia Git同步方法(偏安卓)
  • 什么是 FullGC
  • Unity渲染时的排序规则
  • AI智慧的三重跃升:从「数理魔兽」到「悬荡悟空」的文明协作者
  • 新学期每日总结(第 5天)
  • codeforces round 1054(e.f)
  • 【SimpleFOC-小项目】驱动电机正转3周
  • 联合体union的基本用法
  • 弱结构光三维扫描重建
  • 9.27 git与pycharm
  • PCA降维
  • docker复制文件到宿主机
  • 【SimpleFOC】SimpleFOC的运动规划器(Motion Planner)和梯形速度规划
  • Day22多态详解
  • rad/s RPM之间的换算
  • 再见Playwright!谷歌官方Chrome DevTools MCP正式发布,AI编程效率再翻倍
  • Markdown 之——清单の语法
  • “计算理论之美”课程笔记一:概率
  • “计算理论之美”课程笔记四:高维空间组合优化