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
形成闭环了。
调试过程
重拾几个月前学的东西。。。
- 感谢你赐予我前进的力量