漏洞成因Shiro组件(shiro-550)提供了rememberme功能将cookie中remenberme字段内容分别进行序列化、AES加密、Base64编码操作然后用户在请求网站时shiro又会在识别身份的时候对cookie里的remember字段反向解密AES加密的密钥key被硬编码在代码里导致攻击者可以系列化恶意类再进行AES、Base64编码传递到服务端进行反序列化执行任意代码。环境准备1.确保系统安装了docker和docker-compopse特性DockerDocker Compose管理范围单个容器多个关联容器整个应用栈配置方式命令行参数YAML 配置文件使用场景简单任务、临时测试复杂应用、开发环境、生产部署依赖管理手动处理自动处理服务启动顺序网络/存储手动创建自动创建和连接命令复杂度随容器数量指数增长始终简单up/down2.下载vulhub3.进入漏洞环境4.启动漏洞环境在CVE-2016-4437目录下使用docker-compose up -d命令启动环境。Vulhub 的脚本会自动从 Docker Hub 拉取预先构建好的镜像并启动容器。5、查看环境状态使用 docker ps 命令确认容器启动状态如下所示当前运行的容器25deca871e99属于 Vulhub 搭建的CVE-2016-4437漏洞复现环境容器名均为CVE-2016-4437。容器 ID: 25deca871e99镜像: vulhub/shiro:1.2.4 (这正是存在漏洞的版本)端口映射: 0.0.0.0:8080-8080/tcp (您可以通过 http://your-ip:8080 访问漏洞环境)容器名称: cve-2016-4437_web_1开始渗透访问http://ip:8080/login进行抓包可以看到我们我们这里先不勾选rememberme依然是可以看到shiro的特征的勾选rememberme和不勾选的区别1未登录的情况下请求包的cookie中没有rememberMe字段返回包set-Cookie里也没有deleteMe字段2登录失败的话不管有没有勾选RememberMe字段返回包都会有rememberMedeleteMe字段3不勾选RememberMe登录成功的话返回包set-Cookie里有rememberMedeleteMe字段。但是之后的所有请求中Cookie都不会有RememberMe字段4勾选RememberMe登录成功的话返回包set-Cookie里有rememberMedeleteMe字段还会有remember字段之后的所有请求中Cookie都会有rememberMe字段5或者可L以在cookie后面自己加一个rememberMe1.看返回包有没有rememberMedeleteMe图形化渗透利用shiro反序列化工具1.爆破密钥2.爆破利用链及回显3.命令执行可以看到我们已经可以执行命令了4.注入木马冰蝎主要这里脚本类型要选择jsp因为是java环境哥斯拉这些都大差不差注意修改为java即可