apache-commons-collections7反序列化链分析

本文分析了Apache Commons Collections 7的反序列化链问题,重点讨论了漏洞的背景知识、分析过程及总结。在复现环境中,通过JDK7和CommonsCollections1,揭示了LazyMap类的equals和hashCode方法在反序列化过程中的关键作用,以及如何构造payload以触发系统命令执行。最后,文章提到了构造序列化链后为何需要删除特定键值对的原因。
摘要由CSDN通过智能技术生成

apache-commons-collections7反序列化链分析

apache-commons-collections7反序列化链也是对ACC1链的变形利用罢了,倒是其中涉及一些hash知识

复现环境

JDK7+CommonsCollections1

前景知识

这里要在前面说一下的是Hashtable.put方法新增的元素,是存储在Hashtable$Entry这个内部类里面的,那么获取元素也是在这个内部类获取的,这个跟进一下Hashtable.put方法就能知道

LazyMap.put方法新增的元素,是调用LazyMap.map.put方法新增的,当map属性为HashMap对象的时候,新增的元素是存储在HashMap$Node内部类里面的,具体调试一下LazyMap.put方法便知,注意LazyMap类没有put方法,调用的是其父类的put方法

漏洞分析

看到CommonsCollections7类的getObject方法,前面是一样的,很熟悉的实例化ChainedTransformer对象,Transformer数组的构造也和前面的链一样,后面再通过反射进行赋值
image-20211202222839185
接下来实例化两个HashMap对象和两个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值