漏洞原理
Shiro提供了记住我(RememberMe)的功能,关闭了浏览器下次再打开时还是能记住你是谁,下次访问时无需再登录即可访问。
Shiro对rememberMe的cookie做了加密处理,shiro在CookieRememberMeManaer类中将cookie中rememberMe字段内容分别进行 序列化、AES加密、Base64编码操作。所以我们在伪造cookie的时候,就需要把我们的恶意代码进行序列化,AES加密,Base64编码操作。
在识别身份的时候,客户端对Cookie里的rememberMe进行了一系列的操作,相应的操作的顺序为:
1、获取rememberMe cookie
2、base64 decode
3、解密AES
4、反序列化
影响版本:
Apache Shiro < 1.2.4
特征判断
返回包中含有rememberMe=deleteMe字段
漏洞复现
1.环境搭建
环境目录: cd vulhub-master/shiro/CVE-2016-4437#
启动环境:docker-compose up -d
环境启动后,访问your-ip:8080,进入主界面
使用burpsuit抓包 ,勾选remember me登录
发送到repeater模块,响应包含有rememberMe=deleteMe,证明其为shiro框架
使用shiro_attack工具进行操作
访问your-ip 点击爆破密钥,会生成指定密钥,
可以直接执行命令并回显结果,点解爆破利用链及回显
可以执行命令