JAVA代码审计-悟空crm客户管理系统fastjson漏洞

JAVA代码审计-悟空crm客户管理系统fastjson漏洞

船山信安 2024-11-25 16:07

一. 本地搭建

版本:Wukong CRM9.0

  1. 搭建需要使用myql数据库和redis两个,使用phpstudy搭建即可,mysql数据库的文件为WukongCRM-9.0-JAVA-9.0.1_20191202/src/main/resources/config/crm9-config.txt,将下载的crm9.sql导入数据库即可,数据库格式为UTF-8;redis配置文件为同目录下的redis.json文件,redis默认密码为123456。

  1. 配置好后使用idea打开,配置Tomcat中间件进行本地运行,没有报错正常起来界面如下,默认账号为:admin/123456

二. fastjson漏洞审计

  1. 查看pom.xml文件,发现引用了fastjson组件,版本为有漏洞的1.2.54。

  1. 确定后,查找哪里引用了组件,并且是可控的。

  1. 发现好多地方引用,这个方法如果没有其他处理的话,是会引起反序列话的,进入一个查看具体的代码。

    在AdminExamineController.java中的添加审批处:
    代码解释@Permissions(“manage:examineFlow:update”)这是一个注解,用于权限控制。表示调用此方法需要具有 manage:examineFlow:update 权限。public void saveExamine()定义了一个公共方法 saveExamine,该方法没有返回值(void)。JSONObject jsonObject = JSON.parseObject(getRawData());从请求中获取原始数据(getRawData() 方法返回一个字符串),并将其解析为一个 JSONObject 对象。JSON.parseObject 是一个将 JSON 字符串转换为 JSONObject 的方法。renderJson(examineService.saveExamine(jsonObject));调用 examineService 对象的 saveExamine 方法,并将解析后的 jsonObject 作为参数传递。examineService.saveExamine(jsonObject) 的返回值将被传递给 renderJson 方法,用于生成 HTTP 响应的 JSON 格式数据。

  1. 根据提示找到添加审批处,抓包尝试dnslog。

  1. 打开dnslog平台,使用fastjson漏洞poc探测,可以看到成功回显。

    {“zeo”:{“@type”:”java.net.Inet4Address”,”val”:”0r8b41.dnslog.cn”}

结尾:这只是其中的一处,根据代码搜索看在产品处,线索处等都存在漏洞。

来源:【
JAVA代码审计-悟空crm客户管理系统fastjson漏洞 – FreeBuf网络安全行业门户