MetaCRM7-代码审计
字数 2036 2025-09-23 19:27:46

MetaCRM7 综合管理系统代码审计教学文档

1. 系统概述

MetaCRM7 综合管理系统是基于 Java 开发的客户关系管理系统,采用 MSSQL 数据库,存在多处安全漏洞。

2. 环境信息

  • 数据库: MSSQL
  • 中间件: Tomcat
  • 技术栈: Java + Servlet + JSP
  • 第三方组件:
    • Druid 数据库连接池 (1.0.0+)
    • dom4j (1.6.1.jar,存在 XXE 漏洞)

3. 漏洞详情

3.1 Druid 默认凭据漏洞

位置: WEB-INF/web.xml

<servlet>
    <servlet-name>DruidStatView</servlet-name>
    <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
    <init-param>
        <param-name>loginUsername</param-name>
        <param-value>druid</param-value>
    </init-param>
    <init-param>
        <param-name>loginPassword</param-name>
        <param-value>MetasoftDruid2021+-</param-value>
    </init-param>
</servlet>

风险:

  • 默认用户名: druid
  • 默认密码: MetasoftDruid2021+-
  • 访问路径: /druid/*

利用方式:

  1. 访问 http://target/druid/login.html
  2. 使用默认凭据登录
  3. 可通过 Session 监控获取登录凭证

3.2 前台 SQL 注入漏洞

位置: /headimgsave 接口

代码分析:

  • 调用 ImgController Servlet
  • 参数 accountid 直接拼接 SQL 语句
  • 使用 com.metasoft.wxsconf.wxdb.accountdb.AccountPO#getAc 方法执行查询
  • 异常信息会通过 out.print 输出

利用方式:

POST /headimgsave HTTP/1.1
Host: target
Content-Length: 30
Content-Type: application/x-www-form-urlencoded

accountid=1' and+1=@@VERSION--

: 利用 MSSQL 的报错信息泄露功能,可通过 @@VERSION 获取数据库版本信息。

3.3 文件读取漏洞

3.3.1 /business/common/toviewspecial.jsp

漏洞点:

<jsp:include page="<%=view%>"/>

限制: 只能包含 Tomcat 目录下的文件,无法路径穿越到系统根目录。

3.3.2 /business/common/download-new.jsp

限制: 功能鸡肋,读取范围有限。

3.4 XXE 漏洞

位置: /services/ws WebService 接口

技术细节:

  • 使用 com.metasoft.ws.service.data.CommonOperationServImpl 处理请求
  • 调用 DocumentUtil.getDocument4String 解析 XML
  • dom4j 1.6.1 版本存在 XXE 漏洞
  • 多个方法均受影响

验证方式: 通过 DNSLog 确认漏洞存在

3.5 后台任意文件读取漏洞

位置: /business/common/download.jsp

漏洞机理:

  1. 参数 p 传递给 downUrl
  2. 调用 new AnalyzeParam(downUrl) 解密参数
  3. 使用 AES-ECB 加密,密钥: metacrmloginpass
  4. 参数格式为 JSON
  5. 最终调用 UserService.downloadFile 下载文件

利用条件: 需要后台权限

PoC 生成: 使用 CyberChef 等工具进行 AES 加密生成有效参数

3.6 后台任意文件上传漏洞

位置: /develop/systparam/softlogo/upload.jsp

安全机制:

  • com.metasoft.framework.pub.upload.Upload 添加了黑名单
  • 黑名单配置: configs/limit.json
  • com.metasoft.framework.pub.file.FileUtil 同样有黑名单限制

绕过方式: 通过全局搜索发现其他未受保护的上传点

利用条件: 需要后台权限

4. 修复建议

4.1 Druid 连接池

  • 修改默认用户名和密码
  • 限制访问 IP 范围
  • 升级到最新版本

4.2 SQL 注入

  • 使用预编译语句 (PreparedStatement)
  • 实施参数化查询
  • 对输入进行严格的过滤和验证

4.3 文件操作

  • 限制文件读取范围
  • 禁用动态文件包含
  • 实施路径白名单机制

4.4 XXE 漏洞

  • 升级 dom4j 到最新版本
  • 禁用外部实体解析:
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    dbf.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
    dbf.setFeature("http://xml.org/sax/features/external-general-entities", false);
    dbf.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
    

4.5 文件上传

  • 实施严格的文件类型验证
  • 使用文件内容检测而非扩展名检测
  • 将上传文件存储在非 Web 根目录
  • 对上传文件进行病毒扫描

4.6 加密安全

  • 使用强加密算法 (如 AES-256)
  • 安全管理加密密钥
  • 避免使用硬编码密钥

5. 审计方法总结

  1. 配置文件检查: 检查 web.xml 等配置文件中的安全设置
  2. 第三方组件分析: 识别已知漏洞的组件版本
  3. 输入点追踪: 追踪用户输入的数据流
  4. 权限验证: 检查每个功能的权限控制机制
  5. 加密机制: 分析自定义加密实现的安全性

6. 参考资源

  • OWASP Top 10 安全风险
  • MSSQL 注入手册
  • Java 安全编码规范
  • 常见 Web 漏洞利用技术

: 本教学文档仅用于安全研究和教育目的,请勿用于非法用途。在实际测试中,务必获得系统所有者的明确授权。

MetaCRM7 综合管理系统代码审计教学文档 1. 系统概述 MetaCRM7 综合管理系统是基于 Java 开发的客户关系管理系统,采用 MSSQL 数据库,存在多处安全漏洞。 2. 环境信息 数据库 : MSSQL 中间件 : Tomcat 技术栈 : Java + Servlet + JSP 第三方组件 : Druid 数据库连接池 (1.0.0+) dom4j (1.6.1.jar,存在 XXE 漏洞) 3. 漏洞详情 3.1 Druid 默认凭据漏洞 位置 : WEB-INF/web.xml 风险 : 默认用户名: druid 默认密码: MetasoftDruid2021+- 访问路径: /druid/* 利用方式 : 访问 http://target/druid/login.html 使用默认凭据登录 可通过 Session 监控获取登录凭证 3.2 前台 SQL 注入漏洞 位置 : /headimgsave 接口 代码分析 : 调用 ImgController Servlet 参数 accountid 直接拼接 SQL 语句 使用 com.metasoft.wxsconf.wxdb.accountdb.AccountPO#getAc 方法执行查询 异常信息会通过 out.print 输出 利用方式 : 注 : 利用 MSSQL 的报错信息泄露功能,可通过 @@VERSION 获取数据库版本信息。 3.3 文件读取漏洞 3.3.1 /business/common/toviewspecial.jsp 漏洞点 : 限制 : 只能包含 Tomcat 目录下的文件,无法路径穿越到系统根目录。 3.3.2 /business/common/download-new.jsp 限制 : 功能鸡肋,读取范围有限。 3.4 XXE 漏洞 位置 : /services/ws WebService 接口 技术细节 : 使用 com.metasoft.ws.service.data.CommonOperationServImpl 处理请求 调用 DocumentUtil.getDocument4String 解析 XML dom4j 1.6.1 版本存在 XXE 漏洞 多个方法均受影响 验证方式 : 通过 DNSLog 确认漏洞存在 3.5 后台任意文件读取漏洞 位置 : /business/common/download.jsp 漏洞机理 : 参数 p 传递给 downUrl 调用 new AnalyzeParam(downUrl) 解密参数 使用 AES-ECB 加密,密钥: metacrmloginpass 参数格式为 JSON 最终调用 UserService.downloadFile 下载文件 利用条件 : 需要后台权限 PoC 生成 : 使用 CyberChef 等工具进行 AES 加密生成有效参数 3.6 后台任意文件上传漏洞 位置 : /develop/systparam/softlogo/upload.jsp 安全机制 : com.metasoft.framework.pub.upload.Upload 添加了黑名单 黑名单配置: configs/limit.json com.metasoft.framework.pub.file.FileUtil 同样有黑名单限制 绕过方式 : 通过全局搜索发现其他未受保护的上传点 利用条件 : 需要后台权限 4. 修复建议 4.1 Druid 连接池 修改默认用户名和密码 限制访问 IP 范围 升级到最新版本 4.2 SQL 注入 使用预编译语句 (PreparedStatement) 实施参数化查询 对输入进行严格的过滤和验证 4.3 文件操作 限制文件读取范围 禁用动态文件包含 实施路径白名单机制 4.4 XXE 漏洞 升级 dom4j 到最新版本 禁用外部实体解析: 4.5 文件上传 实施严格的文件类型验证 使用文件内容检测而非扩展名检测 将上传文件存储在非 Web 根目录 对上传文件进行病毒扫描 4.6 加密安全 使用强加密算法 (如 AES-256) 安全管理加密密钥 避免使用硬编码密钥 5. 审计方法总结 配置文件检查 : 检查 web.xml 等配置文件中的安全设置 第三方组件分析 : 识别已知漏洞的组件版本 输入点追踪 : 追踪用户输入的数据流 权限验证 : 检查每个功能的权限控制机制 加密机制 : 分析自定义加密实现的安全性 6. 参考资源 OWASP Top 10 安全风险 MSSQL 注入手册 Java 安全编码规范 常见 Web 漏洞利用技术 注 : 本教学文档仅用于安全研究和教育目的,请勿用于非法用途。在实际测试中,务必获得系统所有者的明确授权。