目录
这一篇是参考别的师傅的好文章对Shiro550反序列化漏洞的学习和练习
Shiro介绍
Apache Shiro是一个强大易用的java安全框架,提供了认证、授权、加密和会话管理等功能。Shiro框架直观、易用,同时也能提供健壮的安全性。
漏洞原理
在Apache shiro的框架中,执行身份验证时提供了一个记住密码的功能(RememberMe),如果用户登录时勾选了这个选项,用户的请求数据包中将会在cookie字段多出一段数据,这一段数据包含了用户的身份信息,且是经过加密的。
加密的过程是:
用户信息=>序列化=>AES加密 (这一步需要用密钥key) =>base64编码=>添加到RememberMe Cookie字段。
勾选记住密码之后,下次登录时,服务端会根据客户端请求包中的cookie值进行身份验证,无需登录即可访问。
那么显然,服务端进行对cookie进行验证的步骤就是:
取出请求包中rememberMe的cookie值 => Base64解码=>AES解密 (用到密key) =>反序列化。
勾选rememberMe后,POST请求包中会有rememberMe字段,而服务端响应包的Set-Cookie中会有rememberMe=deleteMe字段,同时会生成对应的rememberMe字段。
简单来说:
知道密钥