JAVA代码审计-rebuild
字数 1516 2025-08-18 11:35:30

Rebuild 企业管理系统 Java 代码审计报告

1. 系统概述

Rebuild 是一个开源的企业管理系统,可用于 CRM、ERP 等企业内部管理平台。

技术栈

  • Spring Boot
  • Thymeleaf
  • MySQL
  • Fastjson
  • Eacache (缓存技术)

目录结构

  • api: 系统全局配置
  • core: 整个系统的核心业务代码
  • utils: 工具库
  • web: 控制层

2. 系统初始化与运行

  • 源码下载后可直接运行
  • 数据库信息在初始化系统时配置
  • 默认管理员账号: admin/admin
  • 其他默认账号:
    • system/system (默认未激活)
    • rebuild/rebuild (可正常登录)

3. 关键类分析

3.1 核心类

  • RebuildWebInterceptor: 系统拦截器
  • ControllerRespBodyAdvice: 对返回数据进行封装

3.2 登录功能分析 (LoginController)

  1. 首先获取验证码(vcode),默认不开启验证码功能
  2. 获取用户名(user)和密码(password)
  3. 登录次数限制: 超过3次禁止登录
  4. 进入checkUser方法检查用户
    • 除admin外,还有system和rebuild两个默认账号
  5. 获取对应用户名的User对象
    • 所有SQL查询都采用预编译方式,防止SQL注入

4. 漏洞分析

4.1 SSRF漏洞 (服务器端请求伪造)

位置: FileDownloader类的readRawText方法

漏洞详情:

  1. 获取参数url
  2. 直接通过OkHttpUtils.get方法发送请求
  3. 无任何防护措施,导致SSRF漏洞

4.2 数据库信息泄露

位置: FileDownloader类的proxyDownload方法

漏洞链:

  1. getStorageFile方法处理传入的filePath参数

    • 处理三种情况:
      1. 网页链接: 发送请求(存在SSRF)
      2. 七牛云缓存: 获取缓存文件
      3. 本地文件: 读取本地文件
  2. 本地文件读取路径:

    • 进入getFileOfData方法
    • 检查../防止目录穿越(但..\可能绕过)
    • 最终返回路径拼接: return filepath == null ? datadir : new File(datadir, filepath);
    • datadir是配置文件路径

Windows下配置文件结构:

.rebuild
application.properties
ehcache.xml
logback.xml

可利用点:

  • 可读取.rebuild配置文件
  • 该文件包含数据库连接信息等敏感数据

4.3 配置文件加密分析

加密类: com.rebuild.utils.AES

特点:

  1. 使用AES对称加密
  2. 存在默认密钥(类似Shiro550漏洞)
  3. 可利用系统自带代码进行解密

解密方法:
直接使用系统提供的AES类进行解密操作

5. 其他安全防护措施

  1. 命令执行防护:

    • RuntimeProcessBuilder执行命令时严格限制用户输入
  2. SQL注入防护:

    • 全部采用预编译方式执行SQL查询

6. 资产搜索方法

鹰图语法:

web.icon="125ec4bbe626268ec78340eb590acbb6"

版本影响:

  • SSRF和数据库读取漏洞存在于3.5大版本中

7. 总结与建议

  1. 漏洞总结:

    • 存在SSRF漏洞(可读取内部服务)
    • 存在配置文件读取漏洞(可获取数据库凭证)
    • 加密实现存在默认密钥风险
  2. 开发者安全意识:

    • 对常见漏洞(如SQL注入、命令执行)有较好防护
    • 但对SSRF和文件读取风险防护不足
  3. 修复建议:

    • 对SSRF请求添加白名单限制
    • 加强文件路径校验,防止各种形式的路径穿越
    • 避免使用默认加密密钥
    • 敏感配置文件应设置更严格的访问权限
Rebuild 企业管理系统 Java 代码审计报告 1. 系统概述 Rebuild 是一个开源的企业管理系统,可用于 CRM、ERP 等企业内部管理平台。 技术栈 Spring Boot Thymeleaf MySQL Fastjson Eacache (缓存技术) 目录结构 api : 系统全局配置 core : 整个系统的核心业务代码 utils : 工具库 web : 控制层 2. 系统初始化与运行 源码下载后可直接运行 数据库信息在初始化系统时配置 默认管理员账号: admin/admin 其他默认账号: system/system (默认未激活) rebuild/rebuild (可正常登录) 3. 关键类分析 3.1 核心类 RebuildWebInterceptor : 系统拦截器 ControllerRespBodyAdvice : 对返回数据进行封装 3.2 登录功能分析 ( LoginController ) 首先获取验证码(vcode),默认不开启验证码功能 获取用户名(user)和密码(password) 登录次数限制: 超过3次禁止登录 进入 checkUser 方法检查用户 除admin外,还有system和rebuild两个默认账号 获取对应用户名的User对象 所有SQL查询都采用预编译方式,防止SQL注入 4. 漏洞分析 4.1 SSRF漏洞 (服务器端请求伪造) 位置 : FileDownloader 类的 readRawText 方法 漏洞详情 : 获取参数 url 直接通过 OkHttpUtils.get 方法发送请求 无任何防护措施,导致SSRF漏洞 4.2 数据库信息泄露 位置 : FileDownloader 类的 proxyDownload 方法 漏洞链 : getStorageFile 方法处理传入的 filePath 参数 处理三种情况: 网页链接: 发送请求(存在SSRF) 七牛云缓存: 获取缓存文件 本地文件: 读取本地文件 本地文件读取路径: 进入 getFileOfData 方法 检查 ../ 防止目录穿越(但 ..\ 可能绕过) 最终返回路径拼接: return filepath == null ? datadir : new File(datadir, filepath); datadir 是配置文件路径 Windows下配置文件结构 : 可利用点 : 可读取 .rebuild 配置文件 该文件包含数据库连接信息等敏感数据 4.3 配置文件加密分析 加密类 : com.rebuild.utils.AES 特点 : 使用AES对称加密 存在默认密钥(类似Shiro550漏洞) 可利用系统自带代码进行解密 解密方法 : 直接使用系统提供的AES类进行解密操作 5. 其他安全防护措施 命令执行防护 : 对 Runtime 和 ProcessBuilder 执行命令时严格限制用户输入 SQL注入防护 : 全部采用预编译方式执行SQL查询 6. 资产搜索方法 鹰图语法 : 版本影响 : SSRF和数据库读取漏洞存在于3.5大版本中 7. 总结与建议 漏洞总结 : 存在SSRF漏洞(可读取内部服务) 存在配置文件读取漏洞(可获取数据库凭证) 加密实现存在默认密钥风险 开发者安全意识 : 对常见漏洞(如SQL注入、命令执行)有较好防护 但对SSRF和文件读取风险防护不足 修复建议 : 对SSRF请求添加白名单限制 加强文件路径校验,防止各种形式的路径穿越 避免使用默认加密密钥 敏感配置文件应设置更严格的访问权限