JAVA代码审计-rebuild

本文介绍了开源企业管理系统rebuild,包括其低代码特性、功能模块如CRM和ERP,涉及的技术栈如SpringBoot、Thymeleaf等。文章详细剖析了系统的审计过程,指出存在SSRF漏洞但有加密保护,并强调了开发者在代码中对命令执行和SQL安全的考虑。
摘要由CSDN通过智能技术生成

0x01 前言

项目地址: gitee: rebuild_CRM_ERP_库存运输生产系统: 高度可配置化的企业管理系统!企业内部可免费使用!低代码/零代码快速搭建企业中台、CRM客户关系管理、WMS库存管理、TMS运输管理、SCM供应链管理,外贸管理,甚至是 ERP 企业资源计划!
github: GitHub - getrebuild/rebuild: 高度可配置化的企业管理系统!可免费商用!低代码/零代码快速搭建企业中台、CRM客户关系管理、WMS库存管理、TMS运输管理、SCM供应链管理,外贸管理,甚至是 ERP 企业资源计划!

下载最新版3.5.4

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

用到的一些技术栈

  • springboot
  • thymeleaf
  • mysql
  • fastjson
  • eacache(缓存技术)

0x02 审计

在正式开始挖掘漏洞之前,先熟悉一下系统,目录结构如下

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

源码下载完之后,直接运行,数据库的信息在初始化系统的时候配置

正常安装好之后如下:

比较重要的几个类

RebuildWebInterceptor: 拦截器

ControllerRespBodyAdvice: 对数据封装

然后开始看代码,先从登入功能开始,默认的用户名,密码admin admin

控制层类LoginController

先获取vcode验证码,默认不开启,所以不进入第一个if,接着获取user和password,然后判断user登入次数,超过3次就不行,然后进入checkUser

默认的用户名和密码登入

在第一个检查用户的地方,除了admin用户之外,还有俩额外的默认用户名和密码

  • system system
  • rebuild rebuild

system默认没激活,但是rebuild可以正常登入

接着往下看,获取对于用户名的User对象,然后进行判断,这里的sql都是预编译的,没什么可以利用的

后续的一些系统的配置,都需要进行管理员身份验证之后才可以操作

ssrf

在类FileDownloader 的readRawText 方法中

首先获取到参数url,然后进入OkHttpUtils的get方法

这里就直接发送出去了

读取数据库信息

同样在FileDownloader 中的proxyDownload 方法中

getStorageFile 方法

这里对传入的filePath做了三种不同方式的处理

  • 如果是网页链接,则发送请求,这里也有一个SSRF
  • 如果是七牛云中的缓存则获取
  • 最后一项,针对本地文件

进入getFileOfData 方法中

首先判断是否存在../防止任意文件的读取(后续的读取文件形式都是以拼接来读取的,..\绕不过去貌似)

主要观察最后一行

return filepath == null ? datadir : new File(datadir, filepath);

datadir是配置文件的路径,也就是说,虽然不能随便读取,但是可以读取一些配置文件的信息,然后以下是win下的配置文件结构:

上面的文件都可以读取,最主要的就是.rebuild文件,这也就是为啥这个系统不用去改springboot的默认配置文件,他自己搞了一个配置文件,然后我们又可以读取配置文件夹,然后读取一下:

发现他这个安全意识还不错呢,但是没什么用,我们看他的加密方式

在com.rebuild.utils.AES类下面

AES比较熟悉啊,shiro550就是对称密钥的问题,他这里也可以提供默认密钥实现加密解密操作

然后解密一下:

直接用他的代码就行

最后就是找一下互联网的资产了,鹰图语法:

web.icon="125ec4bbe626268ec78340eb590acbb6”

ssrf和读数据库的只能在3.5这个大版本里面才有

0x03 总结

开发者对于漏洞的理解都写在代码里面了,比如针对命令执行的防护,在这个系统里面,对Runtime和ProcessBuilder 在执行命令的时候都没办法传入用户的数据进去,以及对于sql的防护,都采用预编译的方式来查询

  • 26
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值