JAVA代审之启航电商ERP2.0系统
字数 1398 2025-08-29 08:30:12

JAVA代审之启航电商ERP2.0系统安全审计报告

项目介绍

启航电商ERP系统是一个轻量级现代化的电商业务处理系统,具有以下特点:

  • 专注核心订单处理业务,去除大部分不常用功能
  • 开放核心API,支持开发者个性化业务需求
  • 2.0版本是完整开箱即用的开源电商ERP系统
  • 支持多平台多店铺订单、售后、库存等电商核心业务处理
  • 兼容平台:淘宝、京东、拼多多、抖店、微信小店等

环境搭建

后端环境配置

  1. 获取项目

    • 项目地址:https://gitee.com/qiliping/qihangerp
    • 下载到本地后等待Maven依赖加载完成
  2. 系统要求

    • JDK版本:17
    • MySQL版本:8(其他版本需要修改SQL文件编码)
    • Redis:需要配置
  3. 数据库配置

    • 修改配置文件:qihangerp-master\api\src\main\resources\application.yaml
    • 创建数据库并导入SQL文件:docs/qihang-oms.sql
  4. 启动后端

    • 配置完成后直接启动

前端环境配置

  1. 进入前端目录

    cd vue
    
  2. 安装依赖

    npm install
    
    • Node.js版本要求:22.14.0
  3. 修改配置

    • 修改qihangerp-master\vue\nginx.conf文件,设置对应后端地址
  4. 启动前端

    npm run dev
    

代码审计

权限控制分析

  1. JWT认证过滤器

    • 文件位置:qihangerp-master\core\security\src\main\java\cn\qihangerp\security\JwtAuthenticationTokenFilter.java
    • 使用contains方法进行路由检查
    • 无法通过目录穿越(如/login/../xxxx)绕过
    • 整个项目采用前后端分离架构,使用JWT校验
    • 未授权访问漏洞风险较低
  2. 越权测试

    • 创建普通账户,登录获取token进行测试

SQL注入漏洞分析

  1. 技术栈判断

    • 使用MyBatis作为ORM框架
  2. 潜在注入点查找

    • 全局搜索关键词${(MyBatis中可能导致SQL注入的写法)
  3. 漏洞定位

    • 发现一处使用${}而非#{}的参数拼接
    • 调用链:Mapper → Service → Controller
  4. 注入测试

    • 目标路由:/api/sys-api/system/role/list
    • 需要先登录获取有效token
    • 使用order by测试字段数
    • 尝试联合查询
  5. 注入限制

    • 某些字段(如u.login_dateu.create_time)为时间格式
    • 直接查询会导致SQL语句报错(类型不匹配)
    • 需要将这些字段设置为null才能正常回显

安全建议

  1. SQL注入修复

    • 将MyBatis中的${}替换为#{}预处理方式
    • 对必须使用${}的情况进行严格过滤
  2. 权限控制增强

    • 虽然当前权限控制较为严格,但仍建议:
      • 增加细粒度的权限控制
      • 实现基于角色的访问控制(RBAC)
  3. 输入验证

    • 对所有用户输入进行严格验证和过滤
    • 实现参数化查询
  4. 日志监控

    • 增强SQL日志记录
    • 监控异常查询行为

总结

启航电商ERP2.0系统整体安全性较好,但仍存在SQL注入等安全隐患。开发团队应重点关注MyBatis中${}的使用,并加强输入验证和权限控制机制。通过本次审计发现的漏洞,可以有针对性地提升系统安全性。

JAVA代审之启航电商ERP2.0系统安全审计报告 项目介绍 启航电商ERP系统是一个轻量级现代化的电商业务处理系统,具有以下特点: 专注核心订单处理业务,去除大部分不常用功能 开放核心API,支持开发者个性化业务需求 2.0版本是完整开箱即用的开源电商ERP系统 支持多平台多店铺订单、售后、库存等电商核心业务处理 兼容平台:淘宝、京东、拼多多、抖店、微信小店等 环境搭建 后端环境配置 获取项目 : 项目地址:https://gitee.com/qiliping/qihangerp 下载到本地后等待Maven依赖加载完成 系统要求 : JDK版本:17 MySQL版本:8(其他版本需要修改SQL文件编码) Redis:需要配置 数据库配置 : 修改配置文件: qihangerp-master\api\src\main\resources\application.yaml 创建数据库并导入SQL文件: docs/qihang-oms.sql 启动后端 : 配置完成后直接启动 前端环境配置 进入前端目录 : 安装依赖 : Node.js版本要求:22.14.0 修改配置 : 修改 qihangerp-master\vue\nginx.conf 文件,设置对应后端地址 启动前端 : 代码审计 权限控制分析 JWT认证过滤器 : 文件位置: qihangerp-master\core\security\src\main\java\cn\qihangerp\security\JwtAuthenticationTokenFilter.java 使用 contains 方法进行路由检查 无法通过目录穿越(如 /login/../xxxx )绕过 整个项目采用前后端分离架构,使用JWT校验 未授权访问漏洞风险较低 越权测试 : 创建普通账户,登录获取token进行测试 SQL注入漏洞分析 技术栈判断 : 使用MyBatis作为ORM框架 潜在注入点查找 : 全局搜索关键词 ${ (MyBatis中可能导致SQL注入的写法) 漏洞定位 : 发现一处使用 ${} 而非 #{} 的参数拼接 调用链:Mapper → Service → Controller 注入测试 : 目标路由: /api/sys-api/system/role/list 需要先登录获取有效token 使用 order by 测试字段数 尝试联合查询 注入限制 : 某些字段(如 u.login_date 和 u.create_time )为时间格式 直接查询会导致SQL语句报错(类型不匹配) 需要将这些字段设置为 null 才能正常回显 安全建议 SQL注入修复 : 将MyBatis中的 ${} 替换为 #{} 预处理方式 对必须使用 ${} 的情况进行严格过滤 权限控制增强 : 虽然当前权限控制较为严格,但仍建议: 增加细粒度的权限控制 实现基于角色的访问控制(RBAC) 输入验证 : 对所有用户输入进行严格验证和过滤 实现参数化查询 日志监控 : 增强SQL日志记录 监控异常查询行为 总结 启航电商ERP2.0系统整体安全性较好,但仍存在SQL注入等安全隐患。开发团队应重点关注MyBatis中 ${} 的使用,并加强输入验证和权限控制机制。通过本次审计发现的漏洞,可以有针对性地提升系统安全性。