Springblade JWT身份伪造漏洞与SQL注入解析

admin 2024年3月2日17:53:47评论75 views字数 1060阅读3分32秒阅读模式

Springblade JWT身份伪造漏洞与SQL注入解析

springblade框架(又称为BladeX)是基于spring微服务二次开发的框架,广泛应用于java后端的开发中,比如哈尔滨新中新公司的慧新e校系统就是基于springblade开发的。

Springblade JWT身份伪造漏洞与SQL注入解析

1.JWT身份伪造解析

springblade有个jwt加密signkey默认值的漏洞,就是项目如果不指定signkey值,就会使用代码中默认值来加解密jwt。下面根据代码来分析下:

springblade的Gateway服务用于接受和分发请求

Springblade JWT身份伪造漏洞与SQL注入解析

当请求到达gateway,会进入AuthFilter方法中

此处headerToken为读取请求头中的jwt值

Springblade JWT身份伪造漏洞与SQL注入解析

跟踪进入AUTH_KEY

Springblade JWT身份伪造漏洞与SQL注入解析

再跟踪进入HEADER

Springblade JWT身份伪造漏洞与SQL注入解析

所以headerToken值为读取请求体中的Blade-Auth请求头

此处headerToken非空,paramToken为空,因此不满足“缺失令牌,鉴权失败”的条件

Springblade JWT身份伪造漏洞与SQL注入解析

追踪到getToken方法

Springblade JWT身份伪造漏洞与SQL注入解析

Springblade JWT身份伪造漏洞与SQL注入解析

Springblade JWT身份伪造漏洞与SQL注入解析

此处需要满足auth长度大于7,headstr为截取前6位字符串,即bearer,判断前6位满足bearer,则截取剩下的字符串作为token值

再追踪parseJWT方法

Springblade JWT身份伪造漏洞与SQL注入解析

跟踪进入方法,此处parseJWT解析token值

Springblade JWT身份伪造漏洞与SQL注入解析

设置signkey值为getBase64Security()方法返回值的base64解码

Springblade JWT身份伪造漏洞与SQL注入解析

如下图追踪到getSignKey()方法,可以发现此处使用了默认的signkey值

bladexisapowerfulmicroservicearchitectureupgradedandoptimizedfromacommercialproject

所以此处是为了验证JWT的完整性和真实性,需要使用签名密钥对签名部分进行验证,如果签名密钥signKey不一致,则claims为空,返回请求未授权(JWT身份伪造漏洞就出在这一步,JWT的密钥为默认的值,可以让攻击者伪造身份

Springblade JWT身份伪造漏洞与SQL注入解析

2.export-user接口SQL注入解析

这个SQL注入本质上是个后台注入漏洞

因为外部输入未经过滤直接拼接到SQL语句中,危险传参了如下SQL语句:

${ew.customSqlSegment}

允许用户自定义sql语句拼接到查询语句中

查看漏洞所在的blade-user模块,可以发现export-user接口中就带了这个危险语句

Springblade JWT身份伪造漏洞与SQL注入解析

Springblade JWT身份伪造漏洞与SQL注入解析

之后就造成任意登录用户使用该接口都能造成SQL注入

如下图所示

Springblade JWT身份伪造漏洞与SQL注入解析

Springblade JWT身份伪造漏洞与SQL注入解析

END

关注HackingWiki漏洞感知

了解更多安全相关内容

原文始发于微信公众号(HackingWiki漏洞感知):Springblade JWT身份伪造漏洞与SQL注入解析

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年3月2日17:53:47
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Springblade JWT身份伪造漏洞与SQL注入解析http://cn-sec.com/archives/2540820.html

发表评论

匿名网友 填写信息