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

news2024/9/25 21:30:08

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、效果图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/889850.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue3动态组件

1 、 可以通过 shallowRef 把 可以把组件进行包裹 <template><div><el-button click"setclick(son1)">1111</el-button><el-button click"setclick(son2)">2222</el-button><el-button click"setclick(son…

数字变有趣,分析师的必备利器——奥威BI数据可视化工具

数据分析不仅要在短时间内把数据情况摸清、把数据关联梳理清楚&#xff0c;还需要以一直直观易懂的方式将数据信息准确传递给使用者&#xff0c;便于使用者利用这些数据信息去决策管理&#xff0c;这就是数据可视化。说到这&#xff0c;就不得不请出让数据变得有趣、易懂&#…

解决Java中的“Unchecked cast: java.lang.Object to java.util.List”问题

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

使用Scrapy构建自己的数据集

一、说明 当我第一次开始在工业界工作时&#xff0c;我很快意识到的一件事是&#xff0c;有时你必须收集、组织和清理自己的数据。在本教程中&#xff0c;我们将从一个名为FundRazr的众筹网站收集数据。像许多网站一样&#xff0c;该网站有自己的结构、形式&#xff0c;并有大量…

vs code 环境变量的配置

问题 环境变量中重复出现下面这两项 ..:/home/xxx/.local/bin/:/home/xxx/.local/bin/:...这造成了一些环境污染&#xff0c;因为/home/xxx/.local/bin 这个环境变量放在前面&#xff0c;文件夹里面的可执行的文件会比conda环境更加优先地执行。 解决 先说结论&#xff0c;…

数字孪生重塑生产格局:智慧工厂的前景与挑战

随着科技的飞速发展&#xff0c;数字孪生技术在智慧工厂的建设中正展现出令人瞩目的作用。数字孪生&#xff0c;一种将实际物理对象与数字虚拟模型相结合的前沿技术&#xff0c;不仅改变了生产方式&#xff0c;更为智慧工厂的未来描绘了一幅令人振奋的画卷。 在智慧工厂的建设…

Java实现敏感词过滤功能

敏感词过滤功能实现 1.GitHub上下载敏感词文件 2.将敏感词文件放在resources目录下 在业务中可以将文本中的敏感词写入数据库便于管理。 3.提供实现类demo 代码编写思路如下&#xff1a;1.将敏感词加载到list中&#xff0c;2.添加到StringSearch中&#xff0c;3.校验&#x…

SSL证书如何使用?SSL保障通信安全

由于SSL技术已建立到所有主要的浏览器和WEB服务器程序中&#xff0c;因此&#xff0c;仅需安装数字证书或服务器证书就可以激活功能了。SSL证书主要是服务于HTTPS&#xff0c;部署证书后&#xff0c;网站链接就由HTTP开头变为HTTPS。 SSL安全证书主要用于发送安全电子邮件、访…

最新发布!2023版贵州省标准地图

日前&#xff0c;贵州省自然资源厅最新发布了10幅2023版《贵州省标准地图》&#xff0c;涉及政区、水系、交通、全要素等专题。此次发布的新版《贵州省标准地图》&#xff0c;紧紧围绕聚焦实事、铆定实用、主推实效、力主实惠而组织编制。 贵州省自然资源厅将编制出版2023版《…

TCP拥塞控制详解 | 2. 背景

网络传输问题本质上是对网络资源的共享和复用问题&#xff0c;因此拥塞控制是网络工程领域的核心问题之一&#xff0c;并且随着互联网和数据中心流量的爆炸式增长&#xff0c;相关算法和机制出现了很多创新&#xff0c;本系列是免费电子书《TCP Congestion Control: A Systems …

视频云存储/安防监控/视频汇聚EasyCVR平台新增经纬度选取功能

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同&#xff0c;支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。音视频流媒体视频平台EasyCVR拓展性强&#xff0c;视频能力丰富&#xff0c;具体可实现视频监控直播、视频轮播、视频录像、…

1x1 卷积:解释器

一、说明 在这篇博客中&#xff0c;我们将尝试深入探讨 1x1 卷积操作的概念&#xff0c;该概念出现在 Lin等人 &#xff08;2013&#xff09; 的论文“网络中的网络”和 Szegedy 等人 &#xff08;2014&#xff09; 的论文“Go Deep with Convolutions” 中&#xff0c;该论文提…

MYSQL基本命令和操作

&#x1f58a;作者 : D. Star. &#x1f4d8;专栏 : JAVA &#x1f606;今日提问 : 你好&#xff0c;我的朋友&#xff0c;在你的人生途中&#xff0c;会面临很多选择&#xff0c;不管选什么样的结果&#xff0c;我们都多少会有些后悔。如果是你&#xff0c;你会选择爱你的&…

win10系统docker创建ubuntu容器解决开发环境问题

一、win10系统使用docker的原因 最近啊&#xff0c;在学习人工智能-深度学习&#xff0c;用的win10系统进行开发&#xff0c;老是出现一些莫名其妙的问题&#xff0c;无法解决&#xff0c;每天都在为环境问题搞得伤透了脑筋。 说到底还是要使用Linux系统进行开发比较合适。 …

无涯教程-Perl - time函数

描述 此函数返回自纪元以来的秒数(对于大多数系统,是1970年1月1日UTC,00:00:00&#xff1b;对于Mac OS,是1904年1月1日,00:00:00)。适用于gmtime和本地时间。 语法 以下是此函数的简单语法- time返回值 此函数返回自纪元后数秒的整数。 例 以下是显示其基本用法的示例代…

软件项目验收测试:验证软件功能与性能的有效手段

软件验收测试是软件产品周期中的最后一个测试活动&#xff0c;因此也叫交付测试。目的是确保软件准备就绪&#xff0c;并且可以让最终用户将其用于执行软件的既定功能和任务。 一、软件项目验收测试的重要性 1、软件项目验收测试是确保软件交付前质量的重要环节。在软件项目开…

小程序-基于vant的Picker组件实现省市区选择

一、原因 因vant/area-data部分的市/区数据跟后台使用的高德/腾讯省市区有所出入&#xff0c;故须保持跟后台用同一份数据&#xff0c;所以考虑以下几个组件 1、Area 2、Cascader 3、Picker 因为使用的是高德地图的省市区json文件&#xff0c;用area的话修改结构代价太大&…

netstat -ano|findstr 使用方法

一、查看占用端口 &#xff0c;得到进程id netstat -ano|findstr “8080” 1&#xff1a;协议 2&#xff1a;本地地址 3&#xff1a; 外部地址 4&#xff1a; 状态 5&#xff1a; PID 二、查询进程ID对应的进程名称 tasklist|findstr “12448” 三、关闭单个进程 taskkill /…

Matlab 在一张图中画多个机械臂

在matlab中第一次画机械臂时&#xff0c;可能会出现的问题是Link函数不识别&#xff08;如出现Link输入参数不对等) 这大概率是因为缺少matlab工具箱&#xff0c;如图 需要下载该软件包&#xff0c;然后用Matlab打开&#xff0c;就能自动安装到matlab中。下载地址在这个超链接…

【Harbor】使用手册

一、Harbor使用方式 Harbor 作为镜像仓库&#xff0c;主要的交互方式就是 将镜像上传到Harbor上&#xff0c;以及从Harbor上下载指定镜像 在传输镜像前&#xff0c;可以先使用 Harbor 提供的权限管理&#xff0c;将项目设置为私有项目&#xff0c;并对不同用户设置不同角色&…