JAVA代码审计-悟空crm客户管理系统fastjson漏洞
字数 1254 2025-08-20 18:17:58

Java代码审计:悟空CRM客户管理系统Fastjson漏洞分析

一、环境搭建

1.1 系统要求

  • 悟空CRM版本: 9.0 (WukongCRM-9.0-JAVA-9.0.1_20191202)
  • 数据库: MySQL (UTF-8编码)
  • 缓存: Redis
  • 开发环境: IDEA + Tomcat

1.2 搭建步骤

  1. 数据库配置:

    • 数据库文件路径: src/main/resources/config/crm9-config.txt
    • 导入SQL文件: crm9.sql
    • 字符集: UTF-8
  2. Redis配置:

    • 配置文件路径: src/main/resources/config/redis.json
    • 默认密码: 123456
  3. 运行配置:

    • 使用IDEA打开项目
    • 配置Tomcat中间件
    • 默认管理员账号: admin/123456

二、Fastjson漏洞审计

2.1 漏洞组件识别

  1. 检查pom.xml:

    • 发现引用了Fastjson组件
    • 版本: 1.2.54 (已知存在漏洞的版本)
  2. 漏洞方法定位:

    • 搜索关键方法: JSON.parseObject
    • 发现多处引用此方法

2.2 漏洞代码分析

漏洞位置: AdminExamineController.java 中的 saveExamine 方法

@Permissions("manage:examineFlow:update")
public void saveExamine() {
    JSONObject jsonObject = JSON.parseObject(getRawData());
    renderJson(examineService.saveExamine(jsonObject));
}

代码解析:

  1. @Permissions 注解: 权限控制,需要 manage:examineFlow:update 权限
  2. getRawData(): 获取原始请求数据
  3. JSON.parseObject(): 将JSON字符串转换为JSONObject对象
  4. renderJson(): 将结果渲染为JSON响应

漏洞点:

  • 直接使用 JSON.parseObject() 解析未经验证的用户输入
  • Fastjson 1.2.54版本存在反序列化漏洞

2.3 漏洞验证

  1. 使用DNSLog平台:

    • 搭建DNSLog环境
    • 构造Fastjson漏洞POC
  2. 验证步骤:

    • 拦截添加审批的请求
    • 插入Fastjson漏洞POC
    • 观察DNSLog平台是否有回显

2.4 其他潜在漏洞点

审计发现系统中还存在多处类似漏洞:

  • 产品管理模块
  • 线索管理模块
  • 其他使用 JSON.parseObject 的地方

三、修复建议

  1. 升级Fastjson:

    • 升级到最新安全版本(1.2.83或更高)
  2. 输入验证:

    • 对用户输入进行严格验证
    • 使用白名单机制过滤输入
  3. 安全编码:

    • 避免直接解析不可信的JSON数据
    • 使用安全的JSON解析方式
  4. 权限控制:

    • 虽然已有权限注解,但仍需确保权限验证有效

四、总结

本次审计发现悟空CRM 9.0系统中存在Fastjson反序列化漏洞,主要由于:

  1. 使用了存在漏洞的Fastjson 1.2.54版本
  2. 多处直接使用JSON.parseObject解析未经验证的用户输入
  3. 漏洞可导致远程代码执行

建议开发者及时修复,并全面检查系统中所有JSON解析点。

Java代码审计:悟空CRM客户管理系统Fastjson漏洞分析 一、环境搭建 1.1 系统要求 悟空CRM版本 : 9.0 (WukongCRM-9.0-JAVA-9.0.1_ 20191202) 数据库 : MySQL (UTF-8编码) 缓存 : Redis 开发环境 : IDEA + Tomcat 1.2 搭建步骤 数据库配置 : 数据库文件路径: src/main/resources/config/crm9-config.txt 导入SQL文件: crm9.sql 字符集: UTF-8 Redis配置 : 配置文件路径: src/main/resources/config/redis.json 默认密码: 123456 运行配置 : 使用IDEA打开项目 配置Tomcat中间件 默认管理员账号: admin/123456 二、Fastjson漏洞审计 2.1 漏洞组件识别 检查pom.xml : 发现引用了Fastjson组件 版本: 1.2.54 (已知存在漏洞的版本) 漏洞方法定位 : 搜索关键方法: JSON.parseObject 发现多处引用此方法 2.2 漏洞代码分析 漏洞位置 : AdminExamineController.java 中的 saveExamine 方法 代码解析 : @Permissions 注解: 权限控制,需要 manage:examineFlow:update 权限 getRawData() : 获取原始请求数据 JSON.parseObject() : 将JSON字符串转换为JSONObject对象 renderJson() : 将结果渲染为JSON响应 漏洞点 : 直接使用 JSON.parseObject() 解析未经验证的用户输入 Fastjson 1.2.54版本存在反序列化漏洞 2.3 漏洞验证 使用DNSLog平台 : 搭建DNSLog环境 构造Fastjson漏洞POC 验证步骤 : 拦截添加审批的请求 插入Fastjson漏洞POC 观察DNSLog平台是否有回显 2.4 其他潜在漏洞点 审计发现系统中还存在多处类似漏洞: 产品管理模块 线索管理模块 其他使用 JSON.parseObject 的地方 三、修复建议 升级Fastjson : 升级到最新安全版本(1.2.83或更高) 输入验证 : 对用户输入进行严格验证 使用白名单机制过滤输入 安全编码 : 避免直接解析不可信的JSON数据 使用安全的JSON解析方式 权限控制 : 虽然已有权限注解,但仍需确保权限验证有效 四、总结 本次审计发现悟空CRM 9.0系统中存在Fastjson反序列化漏洞,主要由于: 使用了存在漏洞的Fastjson 1.2.54版本 多处直接使用 JSON.parseObject 解析未经验证的用户输入 漏洞可导致远程代码执行 建议开发者及时修复,并全面检查系统中所有JSON解析点。