又一个反序列化漏洞,我服了...

Posted 占小狼的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了又一个反序列化漏洞,我服了...相关的知识,希望对你有一定的参考价值。

优质文章,及时送达

Apache Commons Collections是一个扩展了Java标准库里的Collection结构的第三方基础库,它提供了很多强有力的数据结构类型并且实现了各种集合工具类。

1.反序列化原因

如果Java应用对用户输入的内容做了序列化,但是用户输入的内容是不可信的数据,进行了恶意构造,那么在对恶意构造的数据做反序列化处理,就会产生的非预期对象,在这个过程中就可能带来任意代码执行。

2.漏洞原理

在进行Map转换时,修改Map中的key和value会调用接口,触发内置的transform来获取类名、方法对象进行反射,其中传入的方法名,参数类型等都是可控的,那么我们就可以构造ChainedTransformer来进行反射,调用任意函数

3.影响版本

commons-collections<=3.2.1存在漏洞

4.下载地址

5.漏洞分析

org/apache/commons/collections/map/TransformedMap.class中可以看到decorate()方法,它是将一个Map对象,转换成TransformedMap对象。

又一个反序列化漏洞,我服了...

可以看到它会把它的三个参数带入到TransformedMap方法中,并返回实例化的结果。而在这个方法中,如上图所示,就是将Map中的key和value转换成TransformedMap中的key和value

transform是一个接口,即可实现数据变换的操作。当Map中的任意项的Key或者value被修改,这个接口就会被调用。

又一个反序列化漏洞,我服了...

org/apache/commons/collections/functors/InvokerTransformer.class中,也是我们核心的关键点,可以看到它实现了transform和Serializable这两个接口

又一个反序列化漏洞,我服了...

可以看到transform中,首先会getClass获取传入参数的类名,再通过getMethod获取方法对象,最后调用invoke进行反射

就是说只需要传入方法名、参数类型和参数,我们就可以通过Java的反射机制可以调用任意函数。

5.修复方式

commons-collections升级到3.2.2或更高版本。

通过maven配置更新commons-collections,使用3.2.2或者最新版本,参考如下 

 
   
   
 
  1. <dependency>

  2. <groupId>commons-collections</groupId>

  3. <artifactId>commons-collections</artifactId>

  4. <version>3.2.2</version>

  5. </dependency>

来源:https://tinyurl.com/y3nzjpmn

近期热文

 


最后,分享一份面试宝典Java核心知识点整理.pdf》,覆盖了JVM、锁、高并发、反射、Spring原理、微服务、Zookeeper、数据库、数据结构等等。

明天见(。・ω・。)ノ♡

以上是关于又一个反序列化漏洞,我服了...的主要内容,如果未能解决你的问题,请参考以下文章

霸榜Github第一!谷歌重磅开源的“海啸”,我服了

霸榜Github第一!谷歌重磅开源的“海啸”,我服了

2021年Android春招面试经历,这原因我服了

双非本科字节跳动Java面试题分享,这原因我服了

我服了!豆瓣评分均9.0的“四本Java程序员必刷书籍”真强

离谱,这个开源项目我服了!