shiro反序列化漏洞复现 shiro-550
漏洞成因
shiro默认使用了CookieRememberMeManager,其处理cookie的流程是:得到rememberMe的cookie值–>Base64解码–>AES解密–>反序列化 然而AES的密钥是硬编码的,就导致了攻击者可以构造恶意数据造成反序列化的RCE漏洞。硬编码是什么,参考奇安信的缺陷周话60期,硬编码应该就是密钥存在在class文件中然后可以被反编译等操作得到的,用固定的key进行加密的方式。服务器端识别身份解密处理cookie的流程是
1.获取rememberMe cookie
2.进行base64解码
3.AES解密
4.反序列化
其中aes加解密通过硬编码实现,而且反序列化操作没有进行过滤,导致漏洞存在。
shiro识别
shiro是java的一个安全框架,提供了认证、授权、加密和会话管理功能,所以大多数漏洞出现在登录和会话控制等地方。判断web站点是否使用shrio框架的方法如下:
可以在 cookie 追加一个 rememberMe=xx 的字段,这个字段是rememberMeManager默认的,然后看响应头部可以看看是否有 Set-Cookie: rememberMe=deleteMe; 的字段则可判断使shiro框架:

漏洞识别利用
https://baijiahao.baidu.com/s?id=1669274168756085105&wfr=spider&for=pc
讲的挺详细的,菜鸡看不太懂所以选择工具吧,poc也可以但是图形化工具方便一点。项目地址https://github.com/j1anFen/shiro_attack
还有一个ShiroExploit-Deprecated,检测方法更好一点,总之先把key搞出来,然后后面接着操作,然后命令执行,写马等等。


后面命令执行反弹shell失败了,不知道咋回事,过两天换上面另一个工具试一下。

浙公网安备 33010602011771号