shiro反序列化(cve-2016-4437)
一.shiro是什么。
Shiro是Apache的一个强大且易用的Java安全框架,用于执行身份验证、授权、密码和会话管理。使用 Shiro 易于理解的 API,可以快速轻松地对应用程序进行保护。
二.shiro550反序列化原理
编号:cve-2016-4437
在Apache shiro的框架中,执行身份验证时提供了一个记住密码的功能(RememberMe),如果用户登录时勾选了这个选项。用户的请求数据包中将会在cookie字段多出一段数据,这一段数据包含了用户的身份信息,且是经过加密的。加密的过程是:用户信息=>序列化=>AES加密(这一步需要用密钥key)=>base64编码=>添加到RememberMe Cookie字段。勾选记住密码之后,下次登录时,服务端会根据客户端请求包中的cookie值进行身份验证,无需登录即可访问。那么显然,服务端进行对cookie进行验证的步骤就是:取出请求包中rememberMe的cookie值 => Base64解码=>AES解密(用到密钥key)=>反序列化。
三.漏洞复现
利用vulhub 打开shiro漏洞环境
使用 admin::vulhub 进行登录。
利用burp抓包。
发现返回包中含有rember me 字段,判断为shiro框架。
利用shiro探测exp
存在shiro漏洞,反弹shell至kali 端口 192.168.111.128:6666
反弹shell成功。