首先需要准备一个shiro
的漏洞环境,这里B叨叨一句,从阿里云的spring server
拉回来的模板,模板引擎默认配置有毛病,真鸡儿烦人。环境主要代码都是抄的vulhub
,不是自己写的。
要修改shiro
的Key
我们应该要明白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修改的方法了,但是我不告诉你』。真是听君一些话,如听一席话。。。这早就有的东西。
群里划水的时间就顺便写了,仅供娱乐使用。