什么是序列化,反序列化
序列化:
指在编程时将对象转换为有序字节序列的过程,其作用是在网络传输或者保存在本地文件时候保证对象的完整性和可传递性,序列化之后仍然具有对象状态以及相关描述信息
反序列化:
与序列化相对,在文件或网络中获得序列化之后得信息,利用其描述反向重塑对象的过程
反序列化工具
ysoserial,java反序列化神器不论shoir还是weblogic等都可以从这个软件找到
CVE-2016-4437_Shiro反序列化漏洞
目标复现漏洞,利用漏洞深度原理不做深究
漏洞原因
用户在登陆成功后会生成一个经过加密的cookie在接收cookie之后会base64解码->AES解密->反序列化
我们可以逆向这个过程,把payload先经过AES加密在经过Base64编码生就可以呈现
shiro
默认使用了CookieRememberMeManager
,其处理cookie
的流程是
得到 rememberMe的cookie值
–> Base64解码
–> AES解密
–> 反序列化
注:cookie
指某些网站用于辨别用户身份进行session跟踪从而保存在本地终端上的数据
利用位置
任意http请求中cookie
处rememberMe
参数
漏洞再现
2.输入用户密码,并勾选rememberme
这里漏洞是利用对cookie的绝对信任,一定要勾选rememberme否则无法实现
要注意这里"No proxy listeners are currently running"表示该端口”8080“被docker占用了这里bp不能使用这个端口,故而开启另外一台克隆的kali,(可能可以通过修改docker或者bp端口解决,)