在JDK 8u65以后,官方修改了sun.reflect.annotation.AnnotationInvocationHandler的readObject方法,导致在高版本的Java中CommonCollections1无法利用。
回顾CommonCollections1:
所以导致在高版本都无法利用
TransformedMap链应该是无法继续利用了,那么有没有其它链路来触发LazyMap.get方法呢?
JDK 8u192
commons-collections-3.1
IDEA下载反编译插件,commons-collections-3.1的jar包对进行反编译,解压得到java文件
java -cp "/Applications/IntelliJ IDEA.app/Contents/plugins/java-decompiler/lib/java-decompiler.jar" org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true commons-collections-3.1.jar decompiler_test
通过全局搜索,查找其它可利用的类
寻找其它链路来调用LazyMap.get方法,首先这个可利用的类需要实现Serializable接口,还需类中存在能调用类似map.get方法的方法
尝试全局查找map.get,还需要该类Serializable接口
其中有: