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
项目运行方式:
- 使用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示例:
{"userName":"","loginName":"' AND SLEEP(5)--"}
(需要URL编码)
3. 存储型XSS漏洞
漏洞位置:
- 用户资料修改功能
- 客户信息菜单
攻击方式:
- 使用jsh账号修改用户资料
- Admin账号查看触发XSS
漏洞原因: 过滤器未对XSS进行过滤
4. Fastjson反序列化漏洞
漏洞版本: fastjson 1.2.55
攻击方式:
- 查找使用
JSON.parseObject()和JSON.parse()方法的位置 - 参数
search可控 - 构造恶意Payload
Payload示例:
{"@type":"java.net.Inet4Address","val":"2czklw.dnslog.cn"}
(需要URL编码)
5. 账号枚举漏洞
漏洞表现:
- 用户不存在时提示"用户名不存在"
- 可据此枚举有效用户名
6. 暴力破解漏洞
漏洞表现:
- 登录接口无防暴力破解措施
- 密码使用MD5加密存储
- 可结合账号枚举进行密码爆破
7. 越权重置密码漏洞
漏洞位置: 密码重置功能
漏洞原因:
resetPwd方法直接通过getUser(id)获取用户- 未校验ID与当前用户关系
- 可越权修改其他用户密码
三、修复建议
-
授权绕过:
- 对URL路径进行规范化处理
- 严格校验访问路径
-
SQL注入:
- 使用预编译语句
- 替换
${}为#{} - 实现参数过滤
-
XSS防护:
- 实现输入输出过滤
- 设置Content Security Policy
-
Fastjson升级:
- 升级至最新安全版本
- 使用安全配置
-
账号安全:
- 统一错误提示
- 实现验证码机制
- 增加登录失败限制
-
权限控制:
- 严格校验用户操作权限
- 实现基于角色的访问控制
四、总结
华夏ERP2.3存在多处严重安全漏洞,涉及认证、授权、输入验证等多个方面。建议开发者按照安全开发生命周期(SDL)规范,全面审查代码并实施修复措施。