记某系统SQL注入审计
字数 1656 2025-08-06 12:20:59
JEECG框架仓库系统SQL注入漏洞审计与分析
0x00 系统概述
本文档详细分析基于JEECG框架的仓库系统中存在的SQL注入漏洞,包括路由分析、鉴权机制、权限绕过方法和SQL注入原理。
0x01 路由分析
系统提供三种路由形式:
.do后缀.action后缀/rest/前缀
路由配置位于:src/main/webapp/WEB-INF/web.xml
0x02 鉴权机制分析
Filter层
系统未配置用于权限认证的Filter
Interceptor层
配置位于:src/main/resources/spring-mvc.xml
定义了四个拦截器:
-
EncodingInterceptor
- 功能:设置请求包和响应包的编码格式
- 无安全相关功能
-
SignInterceptor
- 实现中注释掉了原有处理流程,直接返回true
- 无实际鉴权作用
-
AuthInterceptor
- mapping为
/**(处理所有请求) - 主要鉴权拦截器
- mapping为
-
WmsApiInterceptor
- mapping同样为
/** - 辅助鉴权拦截器
- mapping同样为
0x03 权限绕过分析
AuthInterceptor绕过
在spring-mvc.xml中配置了两个白名单属性:
excludeUrlsexcludeContainUrls
鉴权逻辑(preHandle方法):
- 当URL包含
rest/时直接放行 - 当URL匹配
excludeUrls或excludeContainUrls时放行
绕过方法:
使用rest/前缀或wmOmNoticeHController.do路径可绕过鉴权
WmsApiInterceptor绕过
鉴权逻辑:
- 当请求URL在
containUrls列表中时:- 获取header中
Authorization值 - 使用JwtUtils解析
- 当解析值等于
wmsAccount时放行
- 获取header中
漏洞点:
- JwtUtils硬编码了JWT密钥
- 可自行构造有效token
绕过方法:
使用硬编码密钥构造Authorization头,值为wmsAccount
0x04 SQL注入漏洞分析
技术栈
- 使用Hibernate框架进行数据库操作
- 存在HQL查询功能
漏洞位置
关键类:src/main/java/xx/xx/xx/extend/hqlsearch/HqlGenerateUtil
漏洞方法:installHql()
- 调用
Restrictions.sqlRestriction()进行查询 - 从
sqlbuilder参数获取查询条件(JSON格式) - 未对输入进行充分过滤
数据流分析
- 前端传递
sqlbuilder参数(隐藏字段) - 后端使用
JSONHelper.toList()将JSON转为QueryCondition对象列表 QueryCondition类结构:public class QueryCondition { private String field; // 字段名 private String type; // 字段类型 private String condition; // 条件 private String value; // 值 private String relation; // 关系(and/or) }- 通过
getSql()方法拼接SQL字符串 - 最终调用
toString()方法拼接查询条件
漏洞利用
构造恶意sqlbuilder参数:
[{
"field": "createName",
"type": "string",
"condition": "is not null and user() like '%25r%25' and '1' like ",
"value": "%251%25",
"relation": "and"
}]
生成的SQL语句:
1=1 and create_name is not null and user() like '%r%' and '1' like '%1%'
完整利用链
- 通过鉴权绕过访问受保护接口
- 构造恶意
sqlbuilder参数 - 触发SQL注入
0x05 修复建议
-
鉴权修复:
- 移除硬编码的JWT密钥
- 加强AuthInterceptor的白名单管理
- 实现完整的权限验证流程
-
SQL注入修复:
- 对
sqlbuilder参数进行严格校验 - 使用预编译语句替代直接拼接
- 实现参数化查询
- 添加输入过滤机制
- 对
-
架构改进:
- 实现统一的权限验证Filter
- 分离前后端接口权限
- 增加安全审计日志
0x06 总结
本漏洞展示了典型的权限绕过与SQL注入组合漏洞:
- 通过分析路由和拦截器发现鉴权缺陷
- 利用硬编码密钥和宽松的白名单策略绕过权限控制
- 通过未过滤的HQL参数注入实现SQL注入
此类漏洞在基于框架开发的系统中较为常见,开发人员应特别注意框架的安全配置和自定义功能的输入验证。