shiro-cve_2016_4437
漏洞描述
Apache Shiro是一款开源强大且易用的Java安全框架,提供身份验证、授权、密码学和会话管理。Shiro框架直观、易用,同时也能提供健壮的安全性。
因为在反序列化时,不会对其进行过滤,所以如果传入恶意代码将会造成安全问题
在 1.2.4 版本前, 加密的用户信息序列化后存储在名为remember-me的Cookie中,而且是默认ASE秘钥,Key: kPH+bIxk5D2deZiIxcaaaA==,可攻击者可以使用Shiro的默认密钥伪造用户Cookie,触发Java反序列化漏洞,进而在目标机器上执行任意命令。
而在1.2.4之后,ASE秘钥就不为默认了,需要获取到Key才可以进行渗透
漏洞特征
shiro 反序列化 的特征:在返回包的 Set-Cookie 中存在 rememberMe=deleteMe 字段
漏洞复现
搭建环境
使用docker拉取镜像:docker pull vulfocus/shiro-cve-2016-4437
docker run -d --name shiro -p 8888:8080 vulfocus/shiro-cve-2016-4437
然后打开浏览器访问:http://127.0.0.1:8888/
先登录看看cookie
可以看到cookie中有rememberMe=deleteMe的字段,说明存在反序列化漏洞
直接上自动化工具shiroattack2
使用说明
下载安装:https://github.com/SummerSec/ShiroAttack2/releases
准备工作:在shiro_attack2.jar目录里新建一个文件夹data,在里面新建一个文件shiro_keys.txt,并且放一些 常见密钥:https://artio-li.github.io/posts/2022/07/12/shiro-Key%E6%94%B6%E9%9B%86.html
注:如果不创建,,爆破不了密钥
然后开始操作
1.设置url
2.爆破密钥
3.爆破利用链
4.命令执行
防御建议
1.升级到最新版本,1.2.4之前的版本存在反序列化漏洞,至少升级至1.8.0,默认禁用旧版AES-CBC模式,改用AES-GCM。
2.在shiro.ini中自定义密钥,避免使用公开泄露值






