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









相关推荐
雾喔5 分钟前
算法练习7
java·数据结构·算法
掉鱼的猫33 分钟前
跳出 Fatjar 的束缚:Solon 插件的体外扩展(E-Spi)与热插拔(H-Spi)
java
Bill FANG1 小时前
从原生Java NIO到Netty重构:充电桩Socket服务端高性能改造实战
java·重构·nio
2601_955759411 小时前
Claude API 成本审计:该看哪些指标,怎么分析更靠谱
java
带刺的坐椅1 小时前
跳出 Fatjar 的束缚:Solon 插件的体外扩展(E-Spi)与热插拔(H-Spi)
java·jar·solon·plugin·fatjar
宁之明起(B服)1 小时前
Java 反序列化漏洞-xmldecoder/SnakeYAM
java·开发语言
禾高网络2 小时前
开启环保新潮流:回收小程序系统功能介绍
java·大数据·小程序
deviant-ART2 小时前
java stream 的 findFirst 及 findAny 方法遇到 null 元素时会出现 NullPointerException
java·开发语言
jjjava2.03 小时前
MyBatis动态if/trim/where/set标签详解
java·开发语言·数据库
gugucoding3 小时前
34.【Java】I/O流(下):NIO与文件操作
java·python·nio