完成漏洞挖掘条件分析、漏洞复现。
存在安全缺陷的版本: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?类实例,对其进行序列化。
下载 *** 的docker镜像,用以下命令:
设置局域网及容器ip、启动容器,例子:
(1)自定义 ***
(2)启动docker容器
在容器【Apache-Commons-Collections】中,执行命令【java -jar commons-collections-3.1.jar】,则生成文件【CommonsCollections3.1】,如下图。
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
题图:Pixabay License
转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。
我看到很多SEOER都不懂网站建设也不懂程序CMS的使用,至少我也是通过接触SEO才学习网站建设相关知识的。其实我个人倒是感觉,学习SEO优化的前提是必须要懂得网站建设,当然站长需要掌握的技能和知识不...
那要看从哪个方面来看了 掌管财务人口的是户部 掌管国度刑罚的是刑部 掌管部队调。 兵部显得虽大 可是 是有权无兵 在古代 一般 兵部尚书都是天子亲信之人 吏部尚书是皇。。 清朝六部尚书内里权力最...
相信现在有很多的朋友们对于没有房产证怎么分户? 分户,但是没有房产证派出所不给分怎么办都想要了解吧,那么今天小编就来给大家针对没有房产证怎么分户? 分户,但是没有房产证派出所不给分怎么办进行一个介绍吧...
支付宝上线拼团功能!从此,“微信+拼多多”VS“支付宝+淘宝”,电商大战正式打响…… 讲到这,你以为小泰今天讲的是拼团攻略? 错,我只是皮一下,正题在下面�~ 支付宝你天...
古时候科举制度中,将第一名称为狀元,第二名称为状元榜眼,第三名称为探花,这一点坚信很多人都了解,但有一个怪异的状况是,按道理而言人的双眼是有一对的,但是状元榜眼却仅有一位,简直有点儿名不符合实际上...
本文导读目录: 1、黑客帝国2双子星 2、黑客帝国里尼奥不是可以挡子弹?为啥在和双子星打的那段,在博物馆里,和小喽喽用各种冷兵器打的时候,用 3、黑客帝国里的“杀毒程序”特工厉害?还是“双子星...