一文读懂面试官都在问的shiro漏洞
字数 1914 2025-08-10 22:07:53
Apache Shiro 安全漏洞全面解析与防御指南
一、Shiro 框架概述
Apache Shiro 是一个强大易用的 Java 安全框架,提供以下核心功能:
- 认证(Authentication):验证用户身份
- 授权(Authorization):访问控制管理
- 会话管理(Session Management):用户会话管理
- 加密(Cryptography):数据安全保护
- Remember Me:记住用户身份功能
二、Shiro-550 反序列化漏洞 (CVE-2016-4437)
漏洞简介
- 由RememberMe功能的反序列化导致RCE
- 根本原因:默认AES加密密钥硬编码在源码中
- 影响版本:Apache Shiro ≤ 1.2.4
漏洞特征
- Cookie中存在rememberMe字段
- 响应包中可能包含rememberMe相关内容
漏洞原理
-
加密流程:
- 用户登录并勾选"Remember Me"
- Shiro验证通过后序列化用户身份
- 使用硬编码AES密钥加密序列化数据
- Base64编码后存入rememberMe Cookie
-
解密流程:
- 服务端获取rememberMe Cookie值
- Base64解码后AES解密
- 反序列化获取用户身份
漏洞复现步骤
- 识别目标系统使用Shiro框架
- 使用工具爆破加密密钥
- 构造恶意序列化对象
- 生成rememberMe Cookie发送给目标
- 实现远程代码执行
修复建议
- 升级到Shiro 1.2.4以上版本
- 不使用默认加密密钥,改为随机生成
- 禁用RememberMe功能(如非必要)
三、Shiro-721 反序列化漏洞 (CVE-2019-12422)
与Shiro-550的区别
- Shiro-550:通过爆破密钥利用
- Shiro-721:密钥随机生成,需Padding Oracle攻击
- Shiro-721需要有效的用户Cookie作为攻击前提
漏洞特征
- URL中包含Shiro相关字段
- Cookie中存在rememberMe字段
- 响应包中包含rememberMe相关内容
漏洞原理
- 使用AES-128-CBC模式加密rememberMe字段
- 利用Padding Oracle Attack构造恶意rememberMe
- 无需知道加密密钥即可实施攻击
攻击流程
- 获取有效的RememberMe Cookie
- 使用ysoserial生成Payload
- 以RememberMe值为前缀进行Padding Oracle攻击
- 发送精心构造的rememberMe Cookie实现RCE
修复建议
- 升级到最新版本Shiro
- 禁用RememberMe功能(如非必要)
- 实施严格的输入验证
四、Shiro 认证绕过漏洞 (CVE-2020-1957)
漏洞原理
- 在Shiro <1.5.2版本中
- 构造
/xxx/..;/admin/格式URL可绕过目录权限限制 - Shiro校验
/xxxx/..通过,Spring处理为/admin/
复现步骤
- 直接访问受限URL(如
/admin/)被拦截 - 构造恶意URL:
/xxx/..;/admin/ - 成功绕过权限访问后台
修复方案
升级到Shiro 1.5.2及以上版本
五、Shiro 身份验证绕过 (CVE-2020-13933)
漏洞简介
- CVE-2020-11989修复补丁存在缺陷
- Shiro ≤1.5.3版本存在URL处理差异
- 通过
;(%3b)可绕过身份验证
复现方法
- 正常访问受限界面被拦截
- 使用
/admin/%3badmin格式URL - 成功绕过权限验证
六、Shiro 授权绕过 (CVE-2022-32532)
漏洞概述
- 影响版本:Apache Shiro <1.9.1
- 当使用RegexRequestMatcher且正则含
.时 - 可能被构造恶意请求绕过授权
利用方法
- 访问受限资源被拦截
- 修改请求如
/permit/%0any - 成功绕过权限检查
修复方案
升级到Shiro 1.9.1及以上版本
七、综合防御策略
- 及时更新:保持Shiro版本最新
- 密钥管理:
- 不使用默认密钥
- 定期更换加密密钥
- 功能限制:
- 禁用不必要的RememberMe功能
- 限制反序列化类白名单
- 输入验证:
- 严格校验URL路径
- 过滤特殊字符如
;、..等
- 安全配置:
- 正确配置权限规则
- 避免使用含
.的宽松正则
- 监控审计:
- 记录异常访问尝试
- 监控可疑的rememberMe字段使用
通过全面了解这些漏洞原理和防御措施,可以有效提升Apache Shiro框架的安全性,防止攻击者利用这些漏洞危害系统安全。