JFinal CMS 5.1.0 命令执行漏洞分析(CVE-2024-53477)
环境搭建
git clone https://github.com/jflyfox/jfinal_cms.git拉取5.1.0版本。
Tomcat 9.0.96 JDK 17.0.1

漏洞简述
在这个版本,Maven中使用了Fastjson1.2.62版本,该版本存在反序列化漏洞。而正好这个版本存在一个可控的parseObject
漏洞分析
因为是Fastjson漏洞,全局搜索parseObject 
我们跟进到com.jflyfox.api.form.ApiForm#getParams

这里对params使用了parseObject,而这个params是p而来的,看p 
p就是ApiForm的一个属性。现在找哪里用了getParams 
为这几个,继续往上找;发现这几个方法都会在ApiV100Logic或者BaseApiLogic中被调用,且ApiV100Logic继承BaseApiLogic
我们看com.jflyfox.api.service.impl.ApiV100Logic#里面很多方法都能够触发com.jflyfox.api.form.ApiForm#中的get方法,那么就能调用到com.jflyfox.api.form.ApiForm#getParams 现在去找怎么调用到com.jflyfox.api.service.impl.ApiV100Logic#中的方法。
去找controller,去看com.jflyfox.api.controller.ApiController#action的具体实现;

这里很关键,这能返回一个IApiLogic类型的实例,通过反射调用接口;跟进到ReflectionUtils.invokeMethod 
这里通过反射调用方法;我们传入IApiLogic实例然后加一个方法就进入了ApiV100Logic;这里以article为例,

这里调用了ApiForm.getInt 
形成闭环了。
调试过程





重拾几个月前学的东西。。。
- 感谢你赐予我前进的力量

