本帖最后由 ivi 于 2023-8-16 10:19 编辑
今天接到消息,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,暂时不放出来
|