前言

在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接口

其中有:

Untitled

Untitled

Untitled