引言:

相信很多师傅在做测试的时候都会遇到 JWT 做鉴权 对于 JWT 我的理解是:

JWT 是一个包含的身份验证令牌,其作用是在客户端和服务器之间安全传递用户身份与权限信息。

对于 JWT 的测试 比较多的就是利用弱密钥来伪造 JWT 造成任意用户登录 下面我分享一个 由于 JWT 弱密钥导致的任意用户登录。

第一次遇到:

这是第一次遇到的场景

进入后台这个功能少得可怜 这里我点击修改信息的时候抓包

由于传递的不是什么 id 之类的参数 这里猜测权限校验实在 JWT 部分 这里的话也是试一试的态度爆破了一下 JWT 密钥

使用的是无影里面自带的 JwtCrack

这里当时就直接爆出密钥了

这里一个个试了一下 发现更改 userid 的时候是可以实现越权修改的 证明这个 jwt 是可以伪造的

这里由于实在没有什么功能点 当时并没了解过 JWT 可以造成任意用户登录 所以就提交了个越权修改水了个中危,因而错过了一个大洞。

第二次相遇:

我在对某个证书站测试的时候又发现了这个系统 。

这次发现密钥依旧可以爆破 过了这么久都没修复

此时我也是有了点知识储备 所以想着打任意用户登录 但是没登陆管理员一般还是中危 由于这个证书站得两个中危或者高危才能兑换 本人也是深挖了一会 然后翻了一下数据包发现一个登录的数据包。

POST /xxxx/auth/api/admin/login HTTP/1.1

Host:

Cookie: JSESSIONID=D0F0B722CB901E99DB3A6F1A8EFAF9B0

Content-Length: 0

Sec-Ch-Ua: "Google Chrome";v="123", "Not:A-Brand";v="8", "Chromium";v="123"

Cgauthorization: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIyMj3LCJycCI6Il9mTlN4MHQiLCJqdGkiOiJhZWM0ZWYwNy1mY2RhLTQ2NWItOGFkNS1lYTEzOWQ1YzI2Y2EiLCJ0aW1lc3RhbXAiOjE3NjQ1MTExNTc0MjR9.nNGCZd9Vjr_OzTi1sYj9lBRmgnKMo

后续也发现 产生这个 jwt 后 进入后台后的数据包全部都携带这个 jwt 都是这个 这里其实就可以尝试伪造 jwt 来造成任意用户登录了。

这时候缺的其实就是 userid 那管理的 userid 去哪里找呢 一般来说公告处都会有泄露 这里我也是找到管理的 userid 然后替换登录

此时已经可以选择角色了

这里也是直接进入管理后台

有些学校的公告处并没有管理的 id 但是进入后台发现了该开发商通用的一个 id 于是每次替换这个通用的就好了

出去提取一下特征 使用该系统的学校非常多 但是后台洞很难刷起来 这里也是陆续交了几个学校

该厂商修复得也很快 我还没刷起来就遗憾坠机 毕竟只需要改个密钥就能解决这个漏洞了

整篇看完其实这个通杀其实很简单 但是就是这样简单的漏洞往往是很多师傅容易忽视的。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐