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 搭建步骤
-
数据库配置:
- 数据库文件路径:
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")
public void saveExamine() {
JSONObject jsonObject = JSON.parseObject(getRawData());
renderJson(examineService.saveExamine(jsonObject));
}
代码解析:
@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解析点。