反序列化简介
什么是反序列化?
首先了解序列化和反序列化地概念
序列化:将对象转换成字节序列的过程。
反序列化:将字节序列转换成对象的过程。
漏洞原理
Apache shiro框架提供rememberme的功能,用户登录成功后,会生成一个cookie,该cookie的值是经过相关信息序列化,然后AES加密,Base64编码处理成的。在服务器接收到cookie之后
1.先检索rememberme cookie的值
2.Base64解码
3.AES解码
4.进行反序列化
此时AES的密钥是硬编码,导致代码执行漏洞。
检测方法
1.一般登录的界面会有rememberme功能,随意输入登录名和密码进行登录;
2.登录的时候用burp抓包,返回的响应包会带有rememberMe=deleteMe的字样,说明有shiro反序列化漏洞
3.如果没有的话,在请求包里的cookie中添加rememberMe=deleteMe,查看相应包里面set-cookie是否有相同字样,有则表示有该漏洞。
漏洞利用
1.安装docker
2.进入目录
cd shiro/CVE-2016-4437
3.启动漏洞环境
docker-compose up -d
4.访问web页面
IP:8080
5.安装反序列化工具shiro_tool.jar
这个工具是一个集成化工具
使用方法为在此文件目录下面cmd
java -jar shiro_tool.jar http://192.168.86.128:8080
修复方案
升级shiro版本至1.2.5以上