JFinal CMS 5.1.0 命令执行漏洞分析(CVE-2024-53477)
字数 892 2025-08-22 12:22:37
JFinal CMS 5.1.0 命令执行漏洞分析(CVE-2024-53477) 技术文档
漏洞概述
JFinal CMS 5.1.0 存在一个Fastjson反序列化漏洞(CVE-2024-53477),攻击者可通过构造特定的HTTP请求利用该漏洞实现远程代码执行。
漏洞分析
漏洞位置
漏洞主要存在于以下组件:
ApiForm.java类中的反序列化处理- Fastjson 1.2.62版本(已知存在反序列化漏洞)
漏洞原理
- 反序列化入口点:
ApiForm类通过Fastjson处理传入的参数 - 版本依赖:系统使用的Fastjson 1.2.62版本存在已知反序列化漏洞
- 调用链:攻击者可通过特定参数触发反序列化操作
关键代码分析
ApiForm.java
// 反序列化处理点
public class ApiForm {
// 通过getParams方法获取参数
public String getParams() {
// 参数处理逻辑
}
// 其他get方法
public String get(String key) {
// 参数获取逻辑
}
public int getInt(String key) {
// 参数转换逻辑
}
}
ApiV100Logic.java
public class ApiV100Logic {
// 可被调用的方法
public void article() {
// 业务逻辑
}
public void folders() {
// 业务逻辑
}
public void pageArticle() {
// 业务逻辑
}
public void pageArticleSite() {
// 业务逻辑
}
}
攻击调用链
完整调用链如下:
getParams:162, ApiForm (com.jflyfox.api.form)
get:126, ApiForm (com.jflyfox.api.form)
getInt:114, ApiForm (com.jflyfox.api.form)
article:49, ApiV100Logic (com.jflyfox.api.service.impl)
[4 hidden frames]
invokeMethod:88, ReflectionUtils (com.jflyfox.util)
action:71, ApiService (com.jflyfox.api.service)
action:58, ApiController (com.jflyfox.api.controller)
[5 hidden frames]
intercept:68, ApiInterceptor (com.jflyfox.api.interceptor)
[1 hidden frame]
intercept:68, CommonInterceptor (com.jflyfox.component.interceptor)
[1 hidden frame]
intercept:48, SiteInterceptor (com.jflyfox.component.interceptor)
[1 hidden frame]
intercept:78, UserInterceptor (com.jflyfox.system.user)
[1 hidden frame]
intercept:44, UpdateCacheInterceptor (com.jflyfox.component.interceptor)
[1 hidden frame]
intercept:33, PageViewInterceptor (com.jflyfox.component.interceptor)
[1 hidden frame]
intercept:28, UserKeyInterceptor (com.jflyfox.component.interceptor)
[1 hidden frame]
intercept:26, JflyfoxInterceptor (com.jflyfox.jfinal.component.interceptor)
[1 hidden frame]
intercept:48, SessionAttrInterceptor (com.jflyfox.jfinal.component.interceptor)
[3 hidden frames]
intercept:38, ExceptionInterceptor (com.jflyfox.jfinal.component.interceptor)
[2 hidden frames]
handle:53, CurrentPathHandler (com.jflyfox.jfinal.component.handler)
[1 hidden frame]
handle:48, BasePathHandler (com.jflyfox.jfinal.component.handler)
handle:48, HtmlHandler (com.jflyfox.jfinal.component.handler)
[13 hidden frames]
漏洞利用
利用条件
- 系统版本:JFinal CMS 5.1.0
- Fastjson版本:1.2.62
利用方式
构造如下HTTP请求:
GET /api?version=1.0.0&method=article&p={"@type":"java.net.Inet4Address","val":"127.0.0.1:8888"} HTTP/1.1
Host: target.com
其中:
version=1.0.0:用于创建ApiV100Logic对象method=article:指定调用的方法(也可以是folders/pageArticle/pageArticleSite)p参数:Fastjson反序列化payload
可用方法列表
攻击者可利用以下方法:
- article
- folders
- pageArticle
- pageArticleSite
修复建议
- 升级Fastjson:将Fastjson升级到最新安全版本(1.2.83或更高)
- 输入验证:对API接口的输入参数进行严格验证
- 反序列化防护:
- 使用@JSONField(serialize=false)注解敏感字段
- 配置SafeMode防止反序列化漏洞
- 访问控制:限制API接口的访问权限
参考
- Fastjson安全公告:https://github.com/alibaba/fastjson/security
- JFinal CMS官方仓库:https://github.com/jfinal/jfinal