关于shiro漏洞利用中key的修改

Author:TheKingOfDuck@JJ官方认证菜逼

首先需要准备一个shiro的漏洞环境,这里B叨叨一句,从阿里云的spring server拉回来的模板,模板引擎默认配置有毛病,真鸡儿烦人。环境主要代码都是抄的vulhub,不是自己写的。

要修改shiroKey 我们应该要明白shiro key存在那儿。在org.apache.shiro.mgt.AbstractRememberMeManager这个接口中。

注意看,这只是默认key而已,很多时候找到的key都是从配置文件里面读出来的,并非默认这个,官方提供的有接口可以获取或设置这个值。

继承这个接口的类在org.apache.shiro.web.mgt.CookieRememberMeManager,可以调他获取一个看看。

看着好像没啥毛病,但实际测试会发现这个值并不是程序真正在用的值,直接在路由里去set一个值也没生效,为什么?因为获取到的值就不是同一个对象里面的。程序的配置在初始化的时候就在配置类中初始化了一个CookieRememberMeManager对象,程序用的一直是他,而不是自己new出来的那个。

那如果想设置的话也得是在这里设置。比如:

这样是没毛病的

可真实日站的环境中就没那么容易了,没法让你直接修改执行Java代码,这就得利用Java反射相关的技术去获取这一对象,并修改里面的值。

构造的过程会很麻烦,不通环境中遇到的情况会不一样,比如在这份代码中需要修改的bean对象的命名是shiroFilter而不是shiroFilterFactoryBean(其他环境多数为shiroFilterFactoryBean),所以给的代码需要调整以下,这是不用脑子也能完成的事情。

改完访问一下/setshirokey路由测试一下,没啥毛病。

修改的代码调好了,下一步就是塞进yso中生成序列化的数据,再按照shiro的加密方式加密后发包。

发包后再测试 稳得一逼.

写在最后:

写这个是因为看到tw上有人发了一段废话,大概就是『我弄出shiro key修改的方法了,但是我不告诉你』。真是听君一些话,如听一席话。。。这早就有的东西。
群里划水的时间就顺便写了,仅供娱乐使用。

也无风雨也无晴