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









相关推荐
云原生指北2 小时前
GitHub Copilot SDK 入门:五分钟构建你的第一个 AI Agent
java
Leinwin6 小时前
OpenClaw 多 Agent 协作框架的并发限制与企业化规避方案痛点直击
java·运维·数据库
薛定谔的悦7 小时前
MQTT通信协议业务层实现的完整开发流程
java·后端·mqtt·struts
enjoy嚣士7 小时前
springboot之Exel工具类
java·spring boot·后端·easyexcel·excel工具类
罗超驿7 小时前
独立实现双向链表_LinkedList
java·数据结构·链表·linkedlist
盐水冰8 小时前
【烘焙坊项目】后端搭建(12) - 订单状态定时处理,来单提醒和顾客催单
java·后端·学习
凸头8 小时前
CompletableFuture 与 Future 对比与实战示例
java·开发语言
wuqingshun3141598 小时前
线程安全需要保证几个基本特征
java·开发语言·jvm
努力也学不会java9 小时前
【缓存算法】一篇文章带你彻底搞懂面试高频题LRU/LFU
java·数据结构·人工智能·算法·缓存·面试
攒了一袋星辰9 小时前
高并发强一致性顺序号生成系统 -- SequenceGenerator
java·数据库·mysql