Apache Commons Collections反序列化漏洞分析与复现

访客4年前关于黑客接单635


1.1 状态

完成漏洞挖掘条件分析、漏洞复现。

1.2 漏洞分析

存在安全缺陷的版本:Apache Commons Collections3.2.1以下,【JDK版本:1.7.0_80】Apache Maven 3.6.3。

POC核心代码:

漏洞利用思路:

Transformer接口-实现类-InvokerTransformer(),可调用任何函数。

为实现?Runtime.getRuntime().exec(cmd),要多次调用?transformer?并将当前返回结果作为下次输入信息。

为调用?Runtime.getRuntime(),考虑?ConstantTransformer?类,它可直接将输入的参数作为输出。

ChainedTransformer?作为实现类,对于接收的Transformer?数组,采用自身的transform *** (参数是用户输入的)逐次处理Transformer数组对象,将其结果作为下次重复调用的输入参数。它的?transform() *** 即可出触发漏洞。

为寻找反序列化途径,即读进来数据被反序列化执行,则反向寻找可触发ChainedTransformer?对象?.transform()? *** 的途径。

HashMap类可以键值对方式存储数据,put(key,value) *** 可存储数据。

TransformedMap类的功能是存储键值对并将其转换为transform objects,decorate() *** 可创建键值对组,checkSetValue() *** 会触发this.valueTransformer.transform()语句。依次反向寻找调用?checkSetValue()【1】,使?this.valueTransformer?为?ChainedTransformer?对象的途径【2】。

对于【2】,TransformedMap?类的静态 *** ?decorate()可达到目标。

对于【1】,AbstractInputCheckedMapDecorator?类?MapEntry?静态类的setValue *** 会执行this.parent.checkSetValue(value),则接下来应使this.parent为TransformedMap对象【3】。

对于【3】,正向分析POC中此段代码:

研究可知,执行过程中多次在AbstractInputCheckedMapDecorator类中,将TransformedMap对象赋值给this.parent,返回Map.Entry对象,正好可以执行setValue() *** ,触发漏洞。

为提升通用性,必须设法使得调用反序列化 *** 即触发漏洞,因此,考虑寻找类对象满足“重写反序列化readObject()且执行Map类对象变量的setValue(),同时此变量可被控制赋键值数据”。AnnotationInvocationHandler类满足此需求【它对Map类型的成员变量的每个条目均调用setValue()】。

Class.forName()?功能是加载类。

则再次分析,对于【1】,正向分析POC中核心代码:

研究可知,执行过程会执行?MapEntry?静态类的?setValue? *** ,且会执行entrySet? *** 使得?this.parent=TransformedMap?对象,从而触发漏洞。

总的来说,正向的POC构造思路为:先构造?ChainedTransformer?对象,随后创建 Map 对象,再采用?TransformedMap?类实例将?ChainedTransformer?对象保存至 Map 类对象中,再通过反射 *** 获得经 Map 类对象初始化的AnnotationInvocationHandler?类实例,对其进行序列化。

1.3 docker复现


下载 *** 的docker镜像,用以下命令:

设置局域网及容器ip、启动容器,例子:

(1)自定义 ***

(2)启动docker容器

在容器【Apache-Commons-Collections】中,执行命令【java -jar commons-collections-3.1.jar】,则生成文件【CommonsCollections3.1】,如下图。

1606815382_5fc60e9628e3bb9a8eaaa.png!small?1606815382517

1.4 参考资料

  • https://www.freebuf.com/vuls/251664.html

  • https://patrilic.top/2020/03/19/commons-collections-3.1%20%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E5%88%86%E6%9E%90/#0x00-Build

  • https://www. *** i1e.top/java%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E5%AD%A6%E4%B9%A0%E4%B9%8Bapache-commons-collections/

  • https://zhuanlan.zhihu.com/p/62496468

  • https://blog.csdn.net/chengly0129/article/details/70215018

推荐阅读Apache Shiro权限绕过漏洞 (CVE-2020-11989) 挖掘分析和复现Apache Solr 未授权上传(RCE)漏洞(CVE-2020-13957)的原理分析与验证WebLogic UniversalExtractor反序列化漏洞(CVE-2020-14645)的复现和分析

题图:Pixabay License

转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。



相关文章

黑客帝国国语高清(黑客帝国4国语版在线观看)

黑客帝国国语高清(黑客帝国4国语版在线观看)

本文目录一览: 1、求黑客帝国系列百度云 高清 2、求《黑客帝国》百度云高清资源在线观看,莉莉·沃卓斯基导演的 3、黑客帝国国语高清下载 4、黑客帝国国语版在哪能收看全集 求黑客帝国系列...

《山河令》开播,张哲瀚龚俊领衔再谱江湖风云

2月22日,《山河令》发布了江湖群像预告片和双男主海报,正式宣布定档开播,并将于今晚18:00在优酷独家播出。《山河令》由慈文传媒、优酷联合出品,青年演员张哲瀚、龚俊、周也领衔主演。讲述了天窗首领周子...

华夏什么意思(中国为什么被称为“华夏”)

华夏什么意思(中国为什么被称为“华夏”)

踏破璀璨的汗青长空,瞭望星辉里斑驳的流光闪烁,千年的风霜,冻结了几多英雄传说,那古今横贯的天地长线,串联着生命最初的气力,带给人诧异,带给人追忆,那汗青的浩繁画卷,是永不老去的心灵天宇! 一直以来,...

qq碰见黑客怎么办,暗夜 网络黑客,c语言必背单词

传达方法但DNAME记载仍是不能动态更新。 所以研究人员测验寻觅其他的办法,即在WPAD子域名中添加NS记载。 德联本钱现场同享面向数据库安全范畴的出资逻辑path coverag: 途径掩盖率。 H...

各地现救命药短缺怎么回事 是什么救命药短缺治疗什么病的

“平阳霉素(粉针剂,8mg/瓶)和破伤风抗毒素(注射剂,10000iu/支)断货,抗蛇毒血清等供应量不足、不及时,硝酸甘油已恢复供应,但供应紧张……”12月18日,位于粤北山区的清远市人民医院给第一财...

正兴烧烤怎么加盟?加盟流程非常简单

正兴烧烤怎么加盟?加盟流程非常简单

生活条件越来越好,自然人们对于食物的要求不仅仅是温饱这么简单。随之,餐饮行业发展迅速,一时间涌现出很多美食。当然,正兴烧烤作为一种特色美食不仅深受消费者的青睐和喜爱而且创业者也选择纷纷投资正兴烧烤。那...