tierChampion/POC_CVE-2015-9235
GitHub: tierChampion/POC_CVE-2015-9235
演示 JWT 算法混淆攻击的 POC 项目,通过将 RSA 公钥作为 HMAC 密钥伪造令牌实现权限提升。
Stars: 0 | Forks: 0
# CVE-2015-9235
针对 Json Web Token (JWT) 库的算法混淆攻击演示。JWT 通常用于 cookie 中以认证用户会话,因此这种攻击具有关键性。本演示使用了 node 模块 `jsonwebtoken@4.0.0` 来展示该漏洞。
这个项目也是一次很棒的氛围编程活动,因为除了 API 调用之外,前端几乎完全由 LLM 完成。
## 漏洞说明
JWT 的格式如下:
```
b64(header).b64(payload).b64(signature)
With in our case:
header = (algorithm, type)
payload = (username, role)
```
当时,各种 JWT 库虽然可以使用某种算法进行签名,但并未强制执行特定算法,而是依赖于 JWT 头部的内容,从而允许用户决定自己的加密方式。这导致了许多漏洞利用,但本例中使用的方法如下:
1. 后端使用其私钥创建带有 RSA 256 签名的 JWT
2. 攻击者从后端获取公钥,这是一个完全正常的用例
3. 攻击者使用公钥作为密钥,利用对称算法(本例中为 HMAC SHA-256)伪造自定义 JWT,同时将头部中的算法设置为 HS256
4. 后端通过使用其公钥进行 HS256 验证来校验 JWT,结果令牌通过验证!
## 演示步骤
在登录页面以任意用户身份进行认证。您需要先注册。
进入主页后,会有一个按钮,只有当您拥有有效的 admin 会话时才能点击。接下来,您需要运行漏洞利用程序来伪造这个 JWT。
最后,在 local storage 中用伪造的 JWT 替换原始 JWT,刷新后,该按钮应该变为可点击状态,flag 就是您的了!
标签:CVE-2015-9235, DLL 劫持, GNU通用公共许可证, HMAC, jsonwebtoken, JWT, LLM, MITM代理, Node.js, RSA, Unmanaged PE, Web安全, 前端安全, 协议分析, 大语言模型, 数据可视化, 权限提升, 漏洞演示, 算法混淆攻击, 网络安全, 自定义脚本, 蓝队分析, 身份验证绕过, 隐私保护