一、shiro描述
Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序
二、漏洞原理
AES加密的密钥Key被硬编码在代码里,Shiro是开源软件,意味着每个人通过源代码都能拿到AES加密的密钥。因此,攻击者构造一个恶意的对象,并且对其序列化,AES加密,base64编码后,作为cookie的rememberMe字段发送。Shiro将rememberMe进行解密并且反序列化,最终造成反序列化漏洞
三、影响范围
Apache Shiro <=1.2.4
四、判断是否使用shiro框架
使用BP抓包,未登陆的情况下,请求包的cookie中没有rememberMe字段,返回包set-Cookie里也没有deleteMe字段
登陆失败的话,不管勾选RememberMe字段没有,返回包都会有rememberMe=deleteMe字段
如果以上没有返回remembeMe字段还可以尝试在请求包中的cookie中加入 rememberMe=1,来查看返回包是否有rememberMe=deleteMe字段
五、漏洞复现(CVE-2019-12422)
1、搭建环境
获取docker镜像
docker pull medicean/vulapps:s_shiro_1
重启docker
sys