jdk 在 1.8 之后对 AnnotationInvocationHandler 类进行了修复,而CommonsCollections5利用链则是寻找到了替代AnnotationInvocationHandler 的新的可以利用的类。

利用版本:
CommonsCollections 3.1 - 3.2.1
JDK 8u76之前

调用链:

Gadget chain:
        ObjectInputStream.readObject()
            BadAttributeValueExpException.readObject()
                TiedMapEntry.toString()
                    LazyMap.get()
                        ChainedTransformer.transform()
                            ConstantTransformer.transform()
                            InvokerTransformer.transform()
                                Method.invoke()
                                    Class.getMethod()
                            InvokerTransformer.transform()
                                Method.invoke()
                                    Runtime.getRuntime()
                            InvokerTransformer.transform()
                                Method.invoke()
                                    Runtime.exec()