#Apache Shiro 反序列化漏洞(CVE-20164437)#
一、漏洞简介
Shiro 是 Java 的一个安全框架,执行身份验证、授权、密码、会话管理
shiro默认使用了CookieRememberMeManager,其处理cookie的流程是:得到rememberMe的cookie值–>Base64解码–>AES解密–>反序列化 然而AES的密钥是硬编码的,就导致了攻击者可以构造恶意数据造成反序列化的RCE漏洞。
二、漏洞影响
影响版本
Apache Shiro <= 1.2.4
三、产生原因
Apache Shiro框架提供了记住我(RememberMe)的功能,关闭浏览器再次访问时无需再登录即可访问。shiro默认使用CookieRememberMeManager,对rememberMe的cookie做了加密处理,在CookieRememberMeManaer类中将cookie中rememberMe字段内容先后进行序列化、AES加密、Base64编码操作。服务器端识别身份解密处理cookie的流程则是:
(1)获取rememberMe cookie
(2)base64 解码
(3)AES解密(加密密钥硬编码)
(4)反序列化(未作过滤处理)
但是AES加密的密钥Key被硬编码(密钥初始就被定义好不能动态改变的)在代码里,这就意味着每个人通过源代码都能拿到AES加密的密钥。因此,攻击者可以构造一个恶意的对象,并且对其序列化、AES加密、base64编码后,作为cookie的rememberMe字段发送。Shiro将rememberMe进行解密并且反序列化,最终就造成了反序列化的RCE漏洞。只要rememberMe的AES加密密钥泄露,无论shiro是什么版本都可能会导致该漏洞的产生。
四、复现过程
docker 靶机:192.168.111.137
攻击机 win7:192.168.111.132
靶场环境:shiro 1.2.4
访问目标Url
使用大佬的检测工具ShiroExploit检测是否存在shiro反序列化漏洞
存在漏洞,能够直接进行命令执行
反弹shell成功
五、修复方案
及时更新补丁
参考oracle官网发布的补丁:
https://www.oracle.com/security-alerts/cpuoct2020traditional.html
六、参考链接
反序列化工具_Apache Shiro 1.2.4反序列化漏洞复现(CVE20164437)
Apache Shiro反序列化漏洞复现(Shiro550,CVE-2016-4437)
标签
CVE-2018-2894、weblogic、任意文件上传、未授权访问