Shiro反序列化

具体的原理分析就不做了,很简单,就是一个aes加密的cookie反序列化。

一般而言,爆破Shiro Key来获取密钥,如果能爆破出来基本就能利用。

Cookie过长的解决

网上的解决方式无非都是压缩Payload、使用ClassLoader一类的,这类操作方式比较复杂;其实有一种快速简便的方法,即使用jEG。

生成Payload

首先在jEG中生成一个Code模式、利用类型为JDK_AbstractTranslet的类:

800

Shiro加密

然后我们将这个文件使用Shiro Key加密为对应的Cookie,推荐使用woodpecker的Shiro-550插件自动加密,使用参数:

yso_gadget=CommonsCollections10  
yso_cmd=class_file:/Users/evalexp/NetworkUtils.class  
shiro_key=kPH+bIxk5D2deZiIxcaaaA==  
aes_model=CBC

然后就能得到输出,如果没有这样的插件,那就自己动手吧,通过Yso生成字节码后手动加密。

绕过利用

最后生成内存马的字节码,然后将rememberMe的Cookie设为加密的Payload,HTTP参数填jEG生成提示的参数,值填入内存马的Base64,即可直接打入内存马。