一、该问题的重现步骤是什么?
JWT支持将算法设定为“None”。如果“alg”字段设为“ None”,那么签名会被置空,这样任何token都是有效的
原数据包:
将算法改为none
二、你期待的结果是什么?实际看到的又是什么?
期望:如果解决规避这个问题?
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
3.2.0 ;win11
四、请提供详细的错误堆栈信息,这很重要。
五、若有更多详细信息,请在下面提供。
详细内容如下:
漏洞描述:
JWT支持将算法设定为“None”。如果“alg”字段设为“ None”,那么签名会被置空,这样任何token都是有效的
模块说明:
测试URL:
测试过程:
原数据包:
将算法改为none
1. JWT可以设置过期时间,一旦过期就无法再被验证。在验证签名之前,请确保JWT没有过期。
2. 如果签名算法不匹配,验证将失败。因此,请确保在验证JWT之前确认所使用的签名算法
jwt本身就是带过期时间的,并且设置了sign-key强制签名认证。本地改成了none伪造签名是无法通过服务器校验的。要改成none的前提是你把框架底层的认证逻辑改了。只要你配置了 blade.token.sign-key的值,对方就无法进行伪造。
你和渗透团队沟通一下,让他们来攻击我们的线上接口看看,我们需要看到他们的完整重现流程,才能知道怎么修改。
就来渗透这个地址,把伪造并且调用接口成功的流程发我们:https://api.bladex.cn/
补充一点,老版本系统务必看一下安全操作文档,里面有很多提升安全性的方案,具体看:https://center.javablade.com/blade/BladeX-Safety
扫一扫访问 Blade技术社区 移动端