nbcio-boot3.1 解决积木报表基于SSTI的任意代码执行漏洞,积木报表版本从1.4.0升级到最新的1.6.1

简介: nbcio-boot3.1 解决积木报表基于SSTI的任意代码执行漏洞,积木报表版本从1.4.0升级到最新的1.6.1

1、积木报表基于SSTI的任意代码执行漏洞

     使用JeecgBoot 受影响版本中由于积木报表 /jeecg-boot/jmreport/queryFieldBySql Api接口未进行身份校验,使用 Freemarker 处理用户用户传入的 sql 参数,未经授权的攻击者可发送包含恶意 sql 参数的 http 请求,通过 SSTI 在应用端执行任意代码。

2、pom.xml修改成如下1.6.1

<!-- 积木报表 -->
    <dependency>
      <groupId>org.jeecgframework.jimureport</groupId>
      <artifactId>jimureport-spring-boot-starter</artifactId>
      <version>1.6.1</version>
      <exclusions>
        <exclusion>
          <groupId>org.jeecgframework</groupId>
                    <artifactId>autopoi-web</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.apache.poi</groupId>
                    <artifactId>ooxml-schemas</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

3、升级后出现下面问题

org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [SELECT count(0) FROM jimu_report_data_source jrds WHERE 1 = 1 AND jrds.TYPE = ?]; nested exception is java.sql.SQLSyntaxErrorException: Unknown column 'jrds.TYPE' in 'where clause'
    at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:239)
    at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:70)
    at org.springframework.jdbc.core.JdbcTemplate.translateException(JdbcTemplate.java:1541)
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:667)
    at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:713)
    at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:738)
    at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:794)
    at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.queryForObject(NamedParameterJdbcTemplate.java:243)
    at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.queryForObject(NamedParameterJdbcTemplate.java:252)
    at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.queryForObject(NamedParameterJdbcTemplate.java:268)
    at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate

FastClassBySpringCGLIB𝐹𝑎𝑠𝑡𝐶𝑙𝑎𝑠𝑠𝐵𝑦𝑆𝑝𝑟𝑖𝑛𝑔𝐶𝐺𝐿𝐼𝐵

9d5423dc.invoke(<generated>)
    at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
    at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386)
    at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85)
    at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704)
    at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate

EnhancerBySpringCGLIB𝐸𝑛ℎ𝑎𝑛𝑐𝑒𝑟𝐵𝑦𝑆𝑝𝑟𝑖𝑛𝑔𝐶𝐺𝐿𝐼𝐵

ee436ac5.queryForObject(<generated>)
    at org.jeecgframework.minidao.aop.MiniDaoHandler.getReturnMinidaoResult(MiniDaoHandler.java:425)
    at org.jeecgframework.minidao.aop.MiniDaoHandler.invoke(MiniDaoHandler.java:133)

4、应该是表jimu_report_data_source增加了字段,如下两个字段加上

tenant_id    varchar    10      多租户标识

type    varchar    10    0      类型(report:报表;drag:仪表盘)    

5、同时顺便修复一下freemarker模板注入漏洞

 

//update-begin-author:taoyan date:2022-8-10 for: freemarker模板注入问题 禁止解析ObjectConstructor,Execute和freemarker.template.utility.JythonRuntime。
        //https://ackcent.com/in-depth-freemarker-template-injection/
        _tplConfig.setNewBuiltinClassResolver(TemplateClassResolver.SAFER_RESOLVER);
        _sqlConfig.setNewBuiltinClassResolver(TemplateClassResolver.SAFER_RESOLVER);
        //update-end-author:taoyan date:2022-8-10 for: freemarker模板注入问题 禁止解析ObjectConstructor,Execute和freemarker.template.utility.JythonRuntime。

6、效果图


相关文章
|
5天前
|
人工智能 小程序 前端开发
小程序模版|家政服务小程序源码
小程序模版|家政服务小程序源码
|
5天前
|
前端开发 BI
jeecgboot中前端使用带有参数报表的方法
jeecgboot中前端使用带有参数报表的方法
17 0
|
8月前
|
缓存 BI
SAP ABAP 报表屏幕输入字段如何实现联动效果试读版
SAP ABAP 报表屏幕输入字段如何实现联动效果试读版
37 0
若依管理系统图片的显示、修改操作
若依管理系统图片的显示、修改操作
3417 0
若依管理系统图片的显示、修改操作
|
数据安全/隐私保护 开发者 微服务
总结项目功能点(后台系统2)| 学习笔记
快速学习 总结项目功能点(后台系统2)
149 0
|
供应链 Java
Java初学者作业——为某超市设计管理系统,需要在控制台展示系统菜单,菜单之间可以完成跳转。
Java初学者作业——为某超市设计管理系统,需要在控制台展示系统菜单,菜单之间可以完成跳转。
356 0
Java初学者作业——为某超市设计管理系统,需要在控制台展示系统菜单,菜单之间可以完成跳转。
|
前端开发 Java Maven
从零开始实现放置游戏(七)——实现后台管理系统(5)参数校验
前面几章实现了在RMS系统中进行数据的增删查改以及通过Excel批量导入。但仍有遗留的问题,比如在新增或编辑时,怪物的生命值、护甲等数据我们可以输入负值,这种数据是不合理且没有意义的。本章我们就实现服务端对参数的校验。
从零开始实现放置游戏(七)——实现后台管理系统(5)参数校验
|
数据可视化 Oracle 关系型数据库
报表功能升级|新增的这4项图表组件太太太好用了吧!
你们要的交叉透视表、词云、日历热力图、雷达图安排上啦~
471 0
报表功能升级|新增的这4项图表组件太太太好用了吧!
|
前端开发 数据可视化 缓存
网站验收新标准:所有颜色均可以在可视化后台修改
网站验收新标准:所有颜色均可以在可视化后台修改 在大部分用户的概念中,定制网站比起比尔云标准化模板建站要高大上,但阅读完本文后,或许你会认识到这是一种不太科学的认识!为什么?请问你的网站上线后自己可以在可视化编辑界面任意调整各种颜色吗? “这个蓝色需要调整,我觉得浅了一点”,于是乎网络公.
1373 0