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

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

apache-commons-collections5反序列化链就是ACC1 LazyMap攻击链的利用,都是学过的知识点

复现环境

JDK7+CommonsCollections1

漏洞分析

看到CommonsCollections5类的getObject方法,实例化transformerChain类,并进行占位,后面再反射赋值为Transformer数组,Transformer数组很熟悉,构造跟ACC1链一样,Transformer数组里后面的new ConstantTransformer去掉也可以执行成功的,没大影响
image-20211202161106880
实例化LazyMap对象,然后只要调用到LazyMap.get方法就可以完成反序列化链构造
image-20211202161320817
通过BadAttributeValueExpException.readObject->TiedMapEntry.toString->TiedMapEntry.getValue->LazyMap.get调用链完成反序列化链构造
image-20211202161432844
为什么BadAttributeValueExpException的赋值需要通过反射进行呢?查看其构造方法,当传入参数为null的时候,this.val被赋值为null,否则赋值为参数的toString方法返回值
image-20211202162016189
再看到BadAttributeValueExpException.readObject方法,valObj变量就是this.val,当valObj变量为空或者是字符串时就不会调用valObj.toString方法,所以实例化BadAttributeValueExpException的时候传入null为参数,再反射对val赋值
image-20211202162246432

总结

ACC中后面这几条链都是对1和2链的其它利用,知识点都是差不多的,所以这里也就跟的快一点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值