Java代码审计之华夏ERP2.3
字数 1474 2025-08-10 08:54:06

Java代码审计之华夏ERP2.3安全漏洞分析

一、项目环境搭建

  • ERP版本: jsh_ERP2.3
  • 数据库: mysql-5.7.4-m14-winx64
    • 安装方式: 压缩包安装
    • 配置要求: 需在my.ini配置文件中修改编码方式
  • JDK: jdk-8u161-windows-x64
  • MAVEN: apache-maven-3.2.3-bin

项目运行方式:

  1. 使用cmd进入项目文件夹
  2. 执行命令: mvn clean install
  3. 打包后会在dist文件夹下生成压缩包文件
  4. 解压后运行start.bat启动项目

二、安全漏洞分析

1. 授权绕过漏洞

漏洞位置: LogCostFilter过滤器类

过滤规则:

  • 忽略URL: .css, .js, .jpg, .png, .gif, .ico
  • 允许路径: /user/login, /user/registerUser, /v2/api-docs
  • 不拦截包含/doc.html, /register.html, /login.html的URL

绕过方式:

  1. 使用目录穿越符: /user/login/../../
  2. 在接口前添加/login.html/../前缀
  3. 使用.css/.png/.jpg/.ico等后缀

漏洞原因: 过滤器未对传入参数进行规范化处理,导致路径穿越攻击可能

2. SQL注入漏洞

漏洞位置: MyBatis XML映射文件中的${}动态SQL拼接

攻击链分析:

  1. 前端参数search直接传入parameterMap
  2. 通过select(apiName, parameterMap)函数查询
  3. 最终拼接SQL语句执行

Payload示例:

{"userName":"","loginName":"' AND SLEEP(5)--"}

(需要URL编码)

3. 存储型XSS漏洞

漏洞位置:

  1. 用户资料修改功能
  2. 客户信息菜单

攻击方式:

  1. 使用jsh账号修改用户资料
  2. Admin账号查看触发XSS

漏洞原因: 过滤器未对XSS进行过滤

4. Fastjson反序列化漏洞

漏洞版本: fastjson 1.2.55

攻击方式:

  1. 查找使用JSON.parseObject()JSON.parse()方法的位置
  2. 参数search可控
  3. 构造恶意Payload

Payload示例:

{"@type":"java.net.Inet4Address","val":"2czklw.dnslog.cn"}

(需要URL编码)

5. 账号枚举漏洞

漏洞表现:

  • 用户不存在时提示"用户名不存在"
  • 可据此枚举有效用户名

6. 暴力破解漏洞

漏洞表现:

  1. 登录接口无防暴力破解措施
  2. 密码使用MD5加密存储
  3. 可结合账号枚举进行密码爆破

7. 越权重置密码漏洞

漏洞位置: 密码重置功能

漏洞原因:

  1. resetPwd方法直接通过getUser(id)获取用户
  2. 未校验ID与当前用户关系
  3. 可越权修改其他用户密码

三、修复建议

  1. 授权绕过:

    • 对URL路径进行规范化处理
    • 严格校验访问路径
  2. SQL注入:

    • 使用预编译语句
    • 替换${}#{}
    • 实现参数过滤
  3. XSS防护:

    • 实现输入输出过滤
    • 设置Content Security Policy
  4. Fastjson升级:

    • 升级至最新安全版本
    • 使用安全配置
  5. 账号安全:

    • 统一错误提示
    • 实现验证码机制
    • 增加登录失败限制
  6. 权限控制:

    • 严格校验用户操作权限
    • 实现基于角色的访问控制

四、总结

华夏ERP2.3存在多处严重安全漏洞,涉及认证、授权、输入验证等多个方面。建议开发者按照安全开发生命周期(SDL)规范,全面审查代码并实施修复措施。

Java代码审计之华夏ERP2.3安全漏洞分析 一、项目环境搭建 ERP版本 : jsh_ ERP2.3 数据库 : mysql-5.7.4-m14-winx64 安装方式: 压缩包安装 配置要求: 需在my.ini配置文件中修改编码方式 JDK : jdk-8u161-windows-x64 MAVEN : apache-maven-3.2.3-bin 项目运行方式 : 使用cmd进入项目文件夹 执行命令: mvn clean install 打包后会在dist文件夹下生成压缩包文件 解压后运行start.bat启动项目 二、安全漏洞分析 1. 授权绕过漏洞 漏洞位置 : LogCostFilter 过滤器类 过滤规则 : 忽略URL: .css , .js , .jpg , .png , .gif , .ico 允许路径: /user/login , /user/registerUser , /v2/api-docs 不拦截包含 /doc.html , /register.html , /login.html 的URL 绕过方式 : 使用目录穿越符: /user/login/../../ 在接口前添加 /login.html/../ 前缀 使用 .css/.png/.jpg/.ico 等后缀 漏洞原因 : 过滤器未对传入参数进行规范化处理,导致路径穿越攻击可能 2. SQL注入漏洞 漏洞位置 : MyBatis XML映射文件中的 ${} 动态SQL拼接 攻击链分析 : 前端参数 search 直接传入 parameterMap 通过 select(apiName, parameterMap) 函数查询 最终拼接SQL语句执行 Payload示例 : (需要URL编码) 3. 存储型XSS漏洞 漏洞位置 : 用户资料修改功能 客户信息菜单 攻击方式 : 使用jsh账号修改用户资料 Admin账号查看触发XSS 漏洞原因 : 过滤器未对XSS进行过滤 4. Fastjson反序列化漏洞 漏洞版本 : fastjson 1.2.55 攻击方式 : 查找使用 JSON.parseObject() 和 JSON.parse() 方法的位置 参数 search 可控 构造恶意Payload Payload示例 : (需要URL编码) 5. 账号枚举漏洞 漏洞表现 : 用户不存在时提示"用户名不存在" 可据此枚举有效用户名 6. 暴力破解漏洞 漏洞表现 : 登录接口无防暴力破解措施 密码使用MD5加密存储 可结合账号枚举进行密码爆破 7. 越权重置密码漏洞 漏洞位置 : 密码重置功能 漏洞原因 : resetPwd 方法直接通过 getUser(id) 获取用户 未校验ID与当前用户关系 可越权修改其他用户密码 三、修复建议 授权绕过 : 对URL路径进行规范化处理 严格校验访问路径 SQL注入 : 使用预编译语句 替换 ${} 为 #{} 实现参数过滤 XSS防护 : 实现输入输出过滤 设置Content Security Policy Fastjson升级 : 升级至最新安全版本 使用安全配置 账号安全 : 统一错误提示 实现验证码机制 增加登录失败限制 权限控制 : 严格校验用户操作权限 实现基于角色的访问控制 四、总结 华夏ERP2.3存在多处严重安全漏洞,涉及认证、授权、输入验证等多个方面。建议开发者按照安全开发生命周期(SDL)规范,全面审查代码并实施修复措施。