如何搭建Shiro-550环境进行CVE-2016-4437漏洞调试分析及利用?
摘要:代码审计 | Shiro-550 —— CVE-2016-4437 环境搭建 调试分析 漏洞利用 目录 环境搭建 vulhub 快速复现 shiro-root-1.2.4 源码调试环境 抓包观察 RememberMe Cookie 源码调试
代码审计 | Shiro-550 —— CVE-2016-4437 环境搭建 调试分析 漏洞利用
目录
环境搭建
vulhub 快速复现
shiro-root-1.2.4 源码调试环境
抓包观察 RememberMe Cookie
源码调试分析
Cookie 获取流程
解密逻辑
反序列化触发点
硬编码 Key 的问题
加密结构梳理
漏洞利用
踩坑一:版本不匹配
踩坑二:ClassLoader 问题
最终打通
总结
环境搭建
vulhub 快速复现
先用 vulhub 把环境跑起来,工具直接一把梭爆破确认漏洞存在:
git clone https://github.com/vulhub/vulhub.git
cd vulhub/shiro/CVE-2016-4437
docker-compose up -d
访问 http://your-ip:8080
用工具爆破一下:
找到利用链,命令执行成功:
shiro-root-1.2.4 源码调试环境
想深入分析的话光靠 vulhub 不够,还是得把源码环境搭起来方便打断点。
拉源码切版本
git clone https://github.com/apache/shiro.git
cd shiro
git checkout shiro-root-1.2.4 # 切到漏洞版本
git describe --tags # 验证,输出: shiro-root-1.2.4
IDEA 全家桶破解
命令:irm ckey.run/debug | iex
网站:https://ckey.run/
配置 Tomcat 启动项目
配置 Tomcat 启动项:
Tomcat 本地(免费版没有这个功能):
Tomcat 下载地址:https://tomcat.apache.org/download-90.cgi
解压后配置刚刚的源码路径:
配置工件:
这里顺便说一下 war 和 war exploded 的区别:
war —— 把整个项目打包成一个 .war 文件再部署,每次改代码都要重新打包,慢
war exploded —— 直接用解压后的目录结构部署,改了 JSP/class 文件可以热更新,不用重启,调试方便
所以调试的时候选 war exploded 就行了。
解决源码构建的坑
这个版本搭建还是挺麻烦的,有几个问题需要处理。
