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 小时前
[Class的应用]获取类的信息
java·开发语言
开开心心就好5 小时前
AI人声伴奏分离工具,离线提取伴奏K歌用
java·linux·开发语言·网络·人工智能·电脑·blender
80530单词突击赢5 小时前
JavaWeb进阶:SpringBoot核心与Bean管理
java·spring boot·后端
爬山算法6 小时前
Hibernate(87)如何在安全测试中使用Hibernate?
java·后端·hibernate
云姜.6 小时前
线程和进程的关系
java·linux·jvm
是码龙不是码农6 小时前
支付防重复下单|5 种幂等性设计方案(从初级到架构级)
java·架构·幂等性
曹牧6 小时前
Spring Boot:如何在Java Controller中处理POST请求?
java·开发语言
heartbeat..6 小时前
JVM 性能调优流程实战:从开发规范到生产应急排查
java·运维·jvm·性能优化·设计规范
WeiXiao_Hyy6 小时前
成为 Top 1% 的工程师
java·开发语言·javascript·经验分享·后端
苏渡苇6 小时前
优雅应对异常,从“try-catch堆砌”到“设计驱动”
java·后端·设计模式·学习方法·责任链模式