前言:文章索引和路线图
在本系列教程中,我们将深入剖析大多数应用都忽略的 JWT 身份验证漏洞。下方列出了一系列漏洞,从简单的漏洞利用到一些高危漏洞,一一为您一一列举。🗿
介绍
如今,JWT 已成为无状态身份验证的主流。它们简洁轻量——但相信我,这种信任可能会让你功亏一篑。许多应用没有正确检查令牌,从而留下了漏洞。我们就是来帮你破解这些漏洞的。
保持敏锐。🗿
🔐 JWT 简介:3 个关键部分
在我们深入探讨这个疯狂的事情之前,请了解这一点:JWT 只是三个采用 base64 编码的信息片段,用点粘合在一起:
- 有关签名算法的标头元数据,没什么大不了的:
{ “alg” :“HS256” ,“typ” :“JWT” }
2. 有效载荷用户声明,例如您是谁以及您可以做什么:
3. 签名:验证令牌合法性的秘诀。签名使用只有服务器知道的密钥对头部和有效载荷进行哈希处理后生成。
🔓 实验 1:通过未验证的签名绕过 JWT 身份验证
实验室链接:PortSwigger JWT 实验室 - 未验证的签名凭证:
实验室目标
你的任务?翻开剧本,转为管理员,然后一锤定音carlos
。行动起来!🗿
您需要的工具
- Burp Suite(代理和中继器)——经典
- JWT.io(可选)——解码并征服
漏洞概述
这个应用?它直接信任收到的任何 JWT,根本不做签名检查。这简直就是在挑衅你,让你修改一下有效载荷,然后以管理员身份进入。
分步 PoC
- 使用凭证登录。
2. 尝试点击/admin
。除非您是管理员,否则您将看到“禁止进入”的标志。
在 Burp Suite 代理 > HTTP 历史记录中获取 JWT 令牌。那串字符串?就是你的票。
3. 解码有效载荷:看到了"sub": "wiener"
吗?这就是你。
4. 在 Burp Repeater 中更改"sub": "wiener"
→"sub": "administrator"
应用。
5. 发送至/admin
。如果服务器在签名验证方面出现问题,那就太棒了——你成功了。🗿
6.查找/admin/delete?username=carlos
并执行。
实验完成。胜利之舞。✅
🔓 实验 2:通过有缺陷的签名验证绕过 JWT 身份验证 ( alg: none
)
实验室链接:PortSwigger JWT 实验室 - 有缺陷的签名验证凭证:
实验室目标
这次,告诉应用程序,去掉签名"alg": "none"
——这样它就不用费心验证了。然后,获取管理员权限并删除carlos
。同样的老板级精力。🗿
您需要的工具
- Burp Suite(代理和中继器)
- JWT.io(可选)
漏洞概述
当服务器接受时"alg": "none"
,它基本上说:“没有签名?没问题。”剧透:这是一个问题。
分步 PoC
- 登录。
2.拦截/admin
请求。
3. 发送到 Burp Repeater,检查 JWT 有效载荷:
"sub": "wiener"
4. 更改"sub"
为"administrator"
5. 编辑 JWT 标头:
{ "alg": "none" }
6. 完全删除签名部分 — 保留尾随的点。
7. 发送请求。管理员权限已解锁。🗿
8.carlos
照常删除。
实验完成。任务完成。✅
总结和安全课程
漏洞原因修复建议未经验证的 JWT 签名服务器忽略签名始终验证 JWT 签名接受alg: none
令牌服务器接受未签名的令牌拒绝alg: none
,强制使用强算法
下一步是什么?
感受到那股力量了吗?接下来,我们将攻克弱密钥、狡猾的标头注入以及算法混淆攻击——赏金猎人的真正高手。敬请关注,保持警惕。🗿
参考
- JWT.io — 像专业人士一样解码
- PortSwigger 网络安全学院——教授实际技能的实验室 https://portswigger.net/web-security/jwt
- OWASP JWT 备忘单 https://cheatsheetseries.owasp.org/cheatsheets/JSON_Web_Token_for_Java_Cheat_Sheet.html
👋 一切就绪 — — 祝您黑客愉快!
就是这样——两个经典的 JWT 配置错误变成了你漏洞赏金之路上的垫脚石。🎯 这些实验室不仅仅是练习;它们是你在野外发现的蓝图。
不断磨练你的技能,质疑一切,并以合乎道德的方式打破常规。追寻永无止境——它只会不断升级。💻⚔️
保持好奇心,保持危险性(以一种好的方式),最重要的是......
祝你黑客愉快,传奇人物。——
原文始发于微信公众号(安全狗的自我修养):破解 JWT:漏洞赏金猎人指南(第一部分)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论