一、shiro反序列化漏洞原理
Apache Shiro框架提供了记住我的功能(RememberMe),用户登陆成功后会生成经过加密并编码的cookie,在服务端接收cookie值后,Base64解码-->AES解密-->反序列化。攻击者只要找到AES加密的密钥,就可以构造一个恶意对象,对其进行序列化-->AES加密-->Base64编码,然后将其作为cookie的rememberMe字段发送,Shiro将rememberMe进行解密并且反序列化,最终造成反序列化漏洞。
Apache shiro简介
Apache Shiro 是一个强大易用的 Java 安全框架,用于处理身份认证(登录)、授权(权限控制)、会话管理和加密,让应用安全实现变得简单规范。
漏洞影响版本
Apache shiro <= 1.2.4
二、漏洞复现
环境启动成功

随意输入账号密码,点击 Remember me,然后在登录的时候抓包如下。
我们发现请求包中包含rememberme字段,响应包中包含rememberMe=deleteMe这个 Cookie,这是 Shiro 的典型标志。

随后我们使用shiro反序列化漏洞综合利用工具,url输入http://192.168.112.152:8080/doLogin,然后改为POST方式,点击右面的爆破密钥,但是这样显示未发现shiro框架


那么这里我们尝试url输入http://192.168.112.152:8080/,然后再次爆破密钥,这次成功拿到了密钥,所以这里提醒我们再使用工具时候尽量从根目录开始扫描,不用落下某个目录。

然后点击检测当前利用链,随后结果如下,使用构造链CommonsBeanutils1,回显方式选择ALLEcho。

点击命令执行,输入whoami,ok利用成功。

接下来点击内存马,选择蚁剑[Filter],输入个路径abc,随后执行注入,发现注入成功。

打开蚁剑,连接类型选择jsp,连接成功!

