JAVA攻防-Ys项目Gadget链分析&CC2&CC4&CC5&CC7&入口点改动&触发点改动

知识点:

Java攻防-Gadget链-CC2&CC4&CC5&CC7

前面利用链都是使用commons.collections都是3.x版本的,那么来看一下4.x版本有哪些利用方式,把cc2,cc4,cc5,cc7都进行分析。

演示案例-Java攻防-Gadget-CC2&CC4&CC5&CC7

复现配置:pom.xml添加依赖:commons-collections版本

bash 复制代码
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-collections4</artifactId>
    <version>4.0</version>
</dependency>

1、CC2

bash 复制代码
cc2中不通过实例化TrAXFilter进行类加载,而用InvokerTransformer

PriorityQueue#readObject
->PriorityQueue#heapify
->PriorityQueue#siftDown
->PriorityQueue#siftDownUsingComparator
->comparator#compare
->TransformingComparator#compare
->InvokerTransformer#transform
->TemplatesImpl#newTransformer
-> TemplatesImpl::getTransletInstance 
-> TemplatesImpl::defineTransletClasses 
-> TransletClassLoader::defineClass














这里CC2链跟CC1链不一样的是CC1链传递过来的值经过以上两个ChainedTransformer#transform()、ConstantTransformer#transform()才传到这个InvokerTransformer#transform()上,如果没有经过上面两个地方,是不会触发RCE的。CC2链没有ChainedTransformer#transform()、ConstantTransformer#transform()这两个,所以需要换个对象。






2、CC4

bash 复制代码
CC4可以看成是对CC2的改造,用InstantiateTransformer来替代InvokerTransformer

PriorityQueue::readObject
->PriorityQueue#heapify
->PriorityQueue#siftDown
->PriorityQueue#siftDownUsingComparator
    TransformingComparator::compare
        ChainedTransformer::transform
            ConstantTransformer::transform
            InstantiateTransformer::transform
TrAXFilter::带参构造
TemplatesImpl::newTransformer 
-> TemplatesImpl::getTransletInstance 
-> TemplatesImpl::defineTransletClasses 
-> TransletClassLoader::defineClass




















3、CC5

bash 复制代码
基本和CC1一致,入口点换成BadAttributeValueExpException

Gadget chain:
        ObjectInputStream.readObject()
            BadAttributeValueExpException.readObject()
                TiedMapEntry.toString()
                    LazyMap.get()
                        ChainedTransformer.transform()
                            ConstantTransformer.transform()
                            InvokerTransformer.transform()











4、CC7

bash 复制代码
基本和CC1一致,入口点换成Hashtable

Gadget chain:
    Hashtable.readObject
     Hashtable.reconstitutionPut
     AbstractMapDecorator.equals
     AbstractMap.equals
     LazyMap.get
     ChainedTransformer.transform
ConstantTransformer::transform
     InvokerTransformer.transform









相关推荐
不懂的浪漫12 小时前
01|从 Spring Boot 项目理解 RAG:ingest、query、rerank、trace 到 eval
java·人工智能·spring boot·后端·ai·rag
亚林瓜子12 小时前
Java中List之间求交集
java·list·retainall
一生了无挂12 小时前
深入解析JVM、JRE与JDK:Java技术体系的核心基石
java·开发语言·jvm
周末也要写八哥12 小时前
TCP三次握手与四次挥手的过程
java·网络·tcp/ip
@杰克成12 小时前
Java学习31
java·学习·adb
林夕0713 小时前
Qt QML与C++混合编程实战指南
java·开发语言·数据库
Kiling_070413 小时前
Java Map集合详解与实战
java·开发语言·python·算法
Dicky-_-zhang13 小时前
云原生数据库实战:TiDB与CockroachDB对比选型与落地实践
java·jvm
一条泥憨鱼13 小时前
Stream流-从进阶到起飞
java·ide·后端·stream