JWT漏洞-Signature未校验签名有效性

基础知识-漏洞出现原因

上面我们说了Signature是用来保证防篡改的,如果后端对Signature不校验的话,那么相当于JWT就可以随便篡改。我们就可以直接修改payload的内容。

图片.png

如下是存在漏洞的情况,我通过Python进行一个模拟,主动的忽略了证书校验这个问题。

data = jwt.decode(token, options={"verify_signature": False})

如下是安全的代码

data = jwt.decode(token, app.config['SECRET_KEY'], algorithms=["HS256"])

怎么测试?

这里给大家介绍一个网站:https://jwt.io/
当然你也可以直接安装burp的插件。这里我们通过使用burp插件来解决这个问题。首先在这里安装插件。不会安装插件的可以看。

图片.png

环境

练习靶场:http://www.loveli.com.cn/see_bug_one?id=788

788

目标:获取admin用户的权限

开始

打开靶场,看到测试使用的普通用户

图片.png

我们登录之后看到了一个JWT的数据包

图片.png

这里首先点击 JSON Web Token 在下面的payload中可以看到对应的内容了。

图片.png

然后这里我们尝试进行修改role为admin,然后直接复制

图片.png

修改之前我们抓到的请求包,然后可以看到成功的获取到了admin的权限,以及获取到了Flag。

图片.png

温馨提示:本文内容仅用于合法授权的安全学习与研究交流,严禁用于未授权渗透测试、漏洞利用或任何违法行为。

涉及企业或平台的未公开漏洞信息,请遵循负责任披露原则,勿公开传播可直接复现的敏感细节。

如存在侵权、错误信息或不当内容,请联系站方处理,我们将及时核实并删除。邮箱:admin@baimaojianghu.com。