jwt

jwt_tool 工具使用

1、安装

项目地址: https://github.com/ticarpi/jwt_tool

git clone https://github.com/ticarpi/jwt_tool
cd jwt_tool
sudo apt install python3-pip
python3 -m pip install termcolor cprint pycryptodomex requests
chmod +x jwt_tool.py

2、使用

自动解密 jwt:python jwt_tool.py jwt

弱密钥爆破:python3 jwt_tool.py xxx.yyy.zzz -C -d 秘钥字典

进入交互模式修改:python jwt_tool.py jwt -T ,输入数字修改对应参数,输入 0 跳过当前部分,进入下一部分参数修改。

jwt介绍

jwt相关漏洞

1、修改签名算法:手动修改JWT的header,将算法改为none,进行提交。

{
	"alg":"none",
	"typ":"JWT"
}

2、删除签名:当服务端配置不当的时候,可能出现不校验JWT签名的场景。删除JWT的signature部分,服务器仍然接受token,那么就可以伪造任意身份了。

删除,然后修改声明部分的内容,如将id改为管理员用户,可以进行越权操作。

3、信息泄露

报错导致泄露签名信息:JWT的payload不应包含任何敏感信息(如密码),如果base64解码后包含敏感信息,就可以加以利用。例如:CVE-2019-7644

session覆盖

场景:

第一步:输入要重置的账号,图片验证码,点击确定

第二步:安全验证

第三步:输入新密码,点击确定。

漏洞利用:一个浏览器,两个页面

首先,按照流程进入第三步,输入新密码,但是不要点击确定,新开第二个标签页,来到重置密码的页面,进行第一步操作,输入另一个账号,点击确定,然后来到第一个标签页,就是输入新密码,没有点击确定的页面,点击确定,可以绕过安全验证,重置他人的账号密码。

有时候通过修改uid越权后,返回包中有session,可以利用这个session进行登录。