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)
- 首先获取验证码(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
application.properties
ehcache.xml
logback.xml
可利用点:
- 可读取
.rebuild配置文件 - 该文件包含数据库连接信息等敏感数据
4.3 配置文件加密分析
加密类: com.rebuild.utils.AES
特点:
- 使用AES对称加密
- 存在默认密钥(类似Shiro550漏洞)
- 可利用系统自带代码进行解密
解密方法:
直接使用系统提供的AES类进行解密操作
5. 其他安全防护措施
-
命令执行防护:
- 对
Runtime和ProcessBuilder执行命令时严格限制用户输入
- 对
-
SQL注入防护:
- 全部采用预编译方式执行SQL查询
6. 资产搜索方法
鹰图语法:
web.icon="125ec4bbe626268ec78340eb590acbb6"
版本影响:
- SSRF和数据库读取漏洞存在于3.5大版本中
7. 总结与建议
-
漏洞总结:
- 存在SSRF漏洞(可读取内部服务)
- 存在配置文件读取漏洞(可获取数据库凭证)
- 加密实现存在默认密钥风险
-
开发者安全意识:
- 对常见漏洞(如SQL注入、命令执行)有较好防护
- 但对SSRF和文件读取风险防护不足
-
修复建议:
- 对SSRF请求添加白名单限制
- 加强文件路径校验,防止各种形式的路径穿越
- 避免使用默认加密密钥
- 敏感配置文件应设置更严格的访问权限