JeecgBoot SSTI以及JDBC RCE 复现

admin 2023年8月17日16:14:46评论652 views字数 810阅读2分42秒阅读模式

今天接到消息,JeecgBootSSTIJDBC RCE 漏洞,马上来分析复现一下

文笔不好,没去详细分析,随手一写

情报

两个接口存在 RCE,分别是 /jmreport/queryFieldBySql/jmreport/testConnection

SSTI

根据线索:

JeecgBoot SSTI以及JDBC RCE 复现

直接用 JADX 找到对应代码

JeecgBoot SSTI以及JDBC RCE 复现

很直接嘛,直接传入 sql,那直接构造请求先试试:

JeecgBoot SSTI以及JDBC RCE 复现

居然还有黑名单?

JeecgBoot SSTI以及JDBC RCE 复现

输入个简单的试试:

JeecgBoot SSTI以及JDBC RCE 复现

这里起码还有个 SQL 注入漏洞

线索中说明了用 Freemarker 处理了传入的 sql 语句,那直接打 SSTI 试试

JeecgBoot SSTI以及JDBC RCE 复现

JeecgBoot SSTI以及JDBC RCE 复现

JDBC RCE

漏洞利用有个前提,必须有 H2 驱动的依赖

JADX 在反编译的代码中搜索 testConnection,找到对应的接口

org.jeecg.modules.jmreport.desreport.a.a#a(org.jeecg.modules.jmreport.dyndb.vo.JmreportDynamicDataSourceVo)

JeecgBoot SSTI以及JDBC RCE 复现

IDEA 中查看

代码被压的爹妈都不认识了

JeecgBoot SSTI以及JDBC RCE 复现

JeecgBoot SSTI以及JDBC RCE 复现

根据入参 @RequestBody JmreportDynamicDataSourceVo var1 知道,传入一个 JmreportDynamicDataSourceVo 对象的 JSON

JmreportDynamicDataSourceVo

JeecgBoot SSTI以及JDBC RCE 复现

里面能自定义 dbUrl,那么就直接构造参数,试试看

dbUrl 用前段时间的 metabase poc 改改

JeecgBoot SSTI以及JDBC RCE 复现

很简单就弹计算器了

后记

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 复现

原文始发于微信公众号(刨洞安全团队):JeecgBoot SSTI以及JDBC RCE 复现

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年8月17日16:14:46
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   JeecgBoot SSTI以及JDBC RCE 复现http://cn-sec.com/archives/1957923.html

发表评论

匿名网友 填写信息