Shiro反序列化
具体的原理分析就不做了,很简单,就是一个aes加密的cookie反序列化。
一般而言,爆破Shiro Key来获取密钥,如果能爆破出来基本就能利用。
Cookie过长的解决
网上的解决方式无非都是压缩Payload、使用ClassLoader一类的,这类操作方式比较复杂;其实有一种快速简便的方法,即使用jEG。
生成Payload
首先在jEG中生成一个Code模式、利用类型为JDK_AbstractTranslet
的类:
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,即可直接打入内存马。