碰到shiro反序列化漏洞,大家都是怎么解决的

项目是借用一个开源项目,然后被发现有shiro反序列化漏洞,如下图:

 

 有了以上漏洞,就可以在服务器执行任意指令。如下图:

 

 

 解决过程:

1、升级shiro到最新版本1.9.1,却发现还是可以挂马;

2、查开源代码,发现代码里面有指定密钥(可能是早期版本的shiro需要吧),如下:

cookieRememberMeManager.setCipherKey(Base64.decode("fCq+/xW488hMTCD+cmJ3aQ=="));
删除后,改成随机密钥。

3、用shiro反序列化漏洞工具扫描,已经无法直接挂马,但还是有两点,可以扫描发现shiro框架,可以爆力穷举密钥。如下图:

 

 

当然16字节的密钥,是不是很稳,这个就不讨论了。

 

所谓不怕贼偷就怕贼惦记。

然后就试了能不能优化,

改rememberMe关键字,但是用postman,在返回cookie里面可以轻松找到关键字;

 

然后再用工具 ,假设有耐心的情况下,依然可以完美入侵,如下图:

 

 了解shiro反序列化漏洞的原理知道,攻击者是通过cookie攻击,再进行反序列化的利用,这里也没有找到如何关闭rememberMe功能,

就打印了一下cookie的内容

 

 发现攻击者是先尝试发一个rememberMe,检测是否有shiro框架可以利用。

如果有shiro框架,就发第二段cookie内容,rememberMe的值是一段攻击代码,做了base64加密

既然这样,

干脆就拦截删除rememberMe的cookie值,

当然,您们也可以对所有开放的路径做个性化的处理,

(如果您们有其他办法,欢迎一起讨论讨论)

 

posted on 2022-09-05 10:42  Blackie  阅读(3627)  评论(0编辑  收藏  举报

导航