前言
Apache Shiro是一款开源安全框架,提供身份验证、授权、密码学和会话管理。Shiro框架直观、易用,同时也能提供健壮的安全性。
Apache Shiro 1.2.4及以前版本中,加密的用户信息序列化后存储在名为remember-me的Cookie中。攻击者可以使用Shiro的默认密钥伪造用户Cookie,触发Java反序列化漏洞,进而在目标机器上执行任意命令。
影响版本
Apache Shiro <= 1.2.4
漏洞特征:
shiro反序列化的特征:在返回包的 Set-Cookie 中存在 rememberMe=deleteMe 字段
漏洞分析
●Apache Shiro如何记住我?
1.序列化用户身份对象.(这里为SimplePrincipalCollection)
2. 对序列化后的数据进行AES加密,密钥为常量.
3. base64编码
4.设置到cookie中,cookie name等于rememberMe.
●Apache Shiro如何解析我?
1.读取cookie中的rememberMe的值.
2.对其值进行base64解码
3.AES解密
4.反序列化
●如何利用,进行攻击:
整体流程大概就是:命令 => 序列化 =>AES加密 => base64编码 => RememberMe Cookie值 => base64解密 => AES解密 => 反序列化 => 执行命令