文章目录【java安全】CommonsCollections3.1InvokerTransformerConstantTransformerChainedTransformerTransformedMap如何触发checkSetValue()方法?AnnotationInvocationHandlerpoc利用链【java安全】CommonsCollections3.1java开发过程中经常会用到一些库。ApacheCommonsCollections提供了很多的集合工具类。很多项目会使用到该库,可以通过相关的调用链,触发CommonsColletions反序列化RCE漏洞接下来我们介绍一些重
引子CC4简单来说就是CC3前半部分和CC2后半部分拼接组成的,对于其利用的限制条件与CC2一致,一样需要在commons-collections-4.0版本使用,原因是TransformingComparator类在3.1-3.2.1版本中还没有实现Serializable接口,无法被反序列化。接下来让我们仔细分析一下。PriorityQueuePriorityQueue是一个优先队列,作用是用来排序,重点在于每次排序都要触发传入的比较器comparator的compare()方法在CC2中,此类用于调用PriorityQueue重写的readObject来作为触发入口PriorityQue
在最后一步的实现上,cc2和cc3一样,最终都是通过TemplatesImpl恶意字节码文件动态加载方式实现反序列化。已知的TemplatesImpl->newTransformer()是最终要执行的。TemplatesImpl类动态加载方式的实现分析见ysoserialCommonsCollections3分析中的一、二部分。TemplatesImpl->newTransformer()的调用通过InvokerTransformer.transform()反射机制实现,这里可以看ysoserialCommonsCollections1分析中的前半部分内容。cc2是针对commons-coll
在最后一步的实现上,cc2和cc3一样,最终都是通过TemplatesImpl恶意字节码文件动态加载方式实现反序列化。已知的TemplatesImpl->newTransformer()是最终要执行的。TemplatesImpl类动态加载方式的实现分析见ysoserialCommonsCollections3分析中的一、二部分。TemplatesImpl->newTransformer()的调用通过InvokerTransformer.transform()反射机制实现,这里可以看ysoserialCommonsCollections1分析中的前半部分内容。cc2是针对commons-coll