关注这个靶场的其他相关笔记:Authentication Lab —— 靶场笔记合集-CSDN博客
0x01:JWT Signature Disclosure 前情提要
本关的考点是 JWT(Json Web Token)漏洞,JWT 是一个用于跨域认证的技术。如果你不了解 JWT,可以参考这篇文章:JWT 详解。
CVE-2019-7644 低于 1.0.4 版本的所有 Auth0-WCF-Service-JWT NuGet 包,在 JWT 签名验证失败时发出的错误消息中包含有关预期 JWT 签名的敏感信息,格式如下:
Invalid signature. Expected 8Qh5lJ5gSaQylkSdaCIDBoOqKzhoJ0Nutkkap8RgB1Y= got 8Qh5lJ5gSaQylkSdaCIDBoOqKzhoJ0Nutkkap8RgBOo=
此漏洞允许攻击者使用此错误消息来获取任意 JWT 令牌的有效签名,使得攻击者可以伪造令牌来绕过身份验证与授权机制。
0x02:JWT Signature Disclosure Write UP
进入靶场,靶场的目标写的很详细,更新 JWT 的内容使自己获取系统认可的管理员权限:
我们首先将已经获得的 JWT 信息去 JWT 官网(JSON Web Tokens - jwt.io)进行一个解密:
我们修改一下解密后的 Payload 值,将 level
的值改为 administrator
,并尝试进行验证:
我们看一下报错的内容:
直接把自己预期的签名报出来了,我们拿它预期的签名替换我们错误的签名再次进行提交:
可以看到,服务器成功校验了我们提交的 JWT 信息,并且我们成功的获得了管理员(administrator
)权限: