声明
写这个的目的,也是为了学习,分享,交流,希望能被大家看到,我们可以互相学习,希望大家以学习为目的进行漏洞复现,如果有评论的话,我也会认真的看,指出我的不足,我也会认真的改正,嘿嘿,毕竟这条路需要一直学习新的知识,话不多说
漏洞描述
Apache Shiro框架提供了记住密码的功能(RememberMe),用户登录成功后会生成经过加密并编码的cookie。在服务端对rememberMe的cookie值,先base64解码然后AES解密再反序列化,就导致了反序列化RCE漏洞。
那么,Payload产生的过程:
命令=>序列化=>AES加密=>base64编码=>RememberMe Cookie值
在整个漏洞利用过程中,比较重要的是AES加密的密钥,如果没有修改默认的密钥那么就很容易就知道密钥了,Payload构造起来也是十分的简单
影响范围
Apache Shiro < 1.2.4
复现过程
先附上exp的地址
链接:https://pan.baidu.com/s/1NZnHcplGckxksGDU0vu0Ow
提取码:6i4p
漏洞镜像可以用docker获取
docker pull medicean/vulapps:s_shiro_1
获取镜像后访问默认端口8080
http://docker-ip:8080
显示无法连接,原来是没有映射(把这个坑说一下,毕竟自己也踩了。。。)
把8080端口映射到5555端口
docker run -d -p 5555:8080 medicean/vulapps:s_shiro_1
映射后可访问漏洞环境
都内网docker的ip遮不遮也无所谓了,早知道不遮了,搞得有些遮了有些没遮,浪费时间~~
http://docker-ip:5555
使用exp,exp需要调用yso生成payload(ysoserial.jar是java反序列化中常用的payload包)
打开exp的jar包,输入目标地址,进入下一步
先用第一种进行漏洞检测
开始检测,发现,可以利用
执行命令,没啥反应
试试反弹shell
使用
nc监听
nc -lvvp 4444
反连
kali-ip:4444
试试webshell(这里我是有个坑的,我把坑的过程也展示出来)
二话不说,没有思考就直接生成php的马
访问查看源码(因为不知道密码)
这里是冰蝎马,所以要用用冰蝎连,双击打开,怎么也连不上
思考了一下,没细看马,明显不是php是jsp的啊,并且shiro也是apache的,显然不是php,再试一次,把上述过程php换成jsp,成功