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版本(已知存在反序列化漏洞)

漏洞原理

  1. 反序列化入口点ApiForm类通过Fastjson处理传入的参数
  2. 版本依赖:系统使用的Fastjson 1.2.62版本存在已知反序列化漏洞
  3. 调用链:攻击者可通过特定参数触发反序列化操作

关键代码分析

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

修复建议

  1. 升级Fastjson:将Fastjson升级到最新安全版本(1.2.83或更高)
  2. 输入验证:对API接口的输入参数进行严格验证
  3. 反序列化防护
    • 使用@JSONField(serialize=false)注解敏感字段
    • 配置SafeMode防止反序列化漏洞
  4. 访问控制:限制API接口的访问权限

参考

  • Fastjson安全公告:https://github.com/alibaba/fastjson/security
  • JFinal CMS官方仓库:https://github.com/jfinal/jfinal
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 ApiV100Logic.java 攻击调用链 完整调用链如下: 漏洞利用 利用条件 系统版本:JFinal CMS 5.1.0 Fastjson版本:1.2.62 利用方式 构造如下HTTP请求: 其中: 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