今天接到消息,JeecgBoot
有 SSTI
和 JDBC RCE
漏洞,马上来分析复现一下
文笔不好,没去详细分析,随手一写
情报
两个接口存在 RCE
,分别是 /jmreport/queryFieldBySql
和 /jmreport/testConnection
SSTI
根据线索:
直接用 JADX
找到对应代码
很直接嘛,直接传入 sql
,那直接构造请求先试试:
居然还有黑名单?
输入个简单的试试:
这里起码还有个 SQL
注入漏洞
线索中说明了用 Freemarker
处理了传入的 sql
语句,那直接打 SSTI
试试
JDBC RCE
漏洞利用有个前提,必须有 H2
驱动的依赖
用 JADX
在反编译的代码中搜索 testConnection
,找到对应的接口
org.jeecg.modules.jmreport.desreport.a.a
#a(org.jeecg.modules.jmreport.dyndb.vo.JmreportDynamicDataSourceVo)
在 IDEA
中查看
代码被压的爹妈都不认识了
根据入参 @RequestBody JmreportDynamicDataSourceVo var1
知道,传入一个 JmreportDynamicDataSourceVo
对象的 JSON
JmreportDynamicDataSourceVo
里面能自定义 dbUrl
,那么就直接构造参数,试试看
dbUrl
用前段时间的 metabase poc
改改
很简单就弹计算器了
后记
1、Freemarker
可以进一步注入内存马
2、H2 RCE
其实也可以注入内存马
3、jeecgboot
如没有特地引入 H2
驱动依赖,其实也能用另一种方式成功 RCE
,暂时不放出来
参考
https://c0olw.github.io/2023/08/15/JeecgBoot-SSTI%E4%BB%A5%E5%8F%8AJDBC-RCE/
原文始发于微信公众号(刨洞安全团队):JeecgBoot SSTI以及JDBC RCE 复现
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论