前边2~3篇文章内容,剖析了CommonsCollections:3.2.1版本下列存有的反序列化链。今日将再次剖析CommonsCollections:4.0版本,关键叙述CommonsCollections2,4,8的利用链结构。
0x01 市场前景回望
commons-collections:4.0版本实际上并沒有像3.2.2版本的恢复 *** 一样做加入黑名单解决,因此在3.2.1及下列的利用链修改還是可以用的。比如CommonsCollections5
final Map innerMap=new HashMap();
final Map lazyMap=LazyMap.lazyMap(innerMap, transformerChain);
将innerMap改为键值对的声明 *** 就可以,可是大伙儿是否你是否还记得,除开用LazyMap的 *** ,CommonsCollections3曾提及过应用TrAXFilter类复位的 *** 来加载随意的class bytes数组。
这儿commons-collections:4.0版本下的利用链,用的全是TemplatesImpl做为最后的指令实行的编码调用,因为前边剖析过这一利用 *** ,后文不会再转述。
0x02 利用链分析
1. CommonsCollections2,4
CommonsCollections2,4都采用了一个新的类PriorityQueue的Comparator来开启transform函数,二者的区别取决于正中间的桥接用的不一样的Transformer目标。先看来一下PriorityQueue.readObject
圈圈里的关键工作中为反序列化修复该目标的数据信息,大家重点关注heapify()
再次跟踪siftDown
在我们在实例化目标时出示了comparator,可能赶到大家最后开启compare的部位,看一下siftDownUsingComparator
这儿调用了大家传到的comparator,并调用其compare,利用链中应用了TransformingComparator,看来一下它的compare函数
调用了当今的transformer的transform函数,见到这儿,实际上早已很熟透,前边剖析的许多 利用链都跟transform相关,而且4.0版本并沒有加入黑名单有关的transformer。因此下面,大家就可以用前边的一些构思了。
1.CommonsCollections2CommonsCollections2利用了InvokerTransformer类的随意类函数调用的transform,传到结构好的templates gadget并调用 TemplatesImpl.newTransformer
2.CommonsCollections5CommonsCollections4事后用的方式同CommonsCollections3一样,用InstantiateTransformer来开启TrAXFilter的复位,最后也将调用TemplatesImpl.newTransformer
梳理一下利用链
CommonsCollection2:
PriorityQueue.readObject
-> PriorityQueue.heapify()
-> PriorityQueue.siftDown()
-> PriorityQueue.siftDownUsingComparator()
-> TransformingComparator.compare()
-> InvokerTransformer.transform()
-> TemplatesImpl.newTransformer()
... templates Gadgets ...
-> Runtime.getRuntime().exec()
CommonsCollection4:
PriorityQueue.readObject
-> PriorityQueue.heapify()
-> PriorityQueue.siftDown()
-> PriorityQueue.siftDownUsingComparator()
-> TransformingComparator.compare()
-> ChainedTransformer.transform()
-> InstantiateTransformer.transform()
-> TemplatesImpl.newTransformer()
... templates Gadgets ...
-> Runtime.getRuntime().exec()
2.CommonsCollections8
CommonsCollections8是2020年navalorenzo消息推送到ysoserial上的,8与2,4的区别取决于应用了新的readObject开启点TreeBag
看来一下TreeBag.readObject
这儿的2个关键环节TreeBag的父类的doReadObject函数和TreeMap.
看一下doReadObject
这儿对传到的TreeMap调用了put函数
再次跟踪compare函数
这儿又返回了了解的comparator.compare函数,在其中comparator便是大家结构的TransformingComparator
事后跟CommonsCollections2同样,也不转述了。
本文将介绍内容营销之全场景生活服务,希望大家会对时下电商布局多业态全渠道的发展趋势,以及丰富的活动玩法有所了解。 首先我们来普及一个概念,什么叫内容营销。Content Marketing,是不需要...
此刻许多人都想要通过加盟创业的方法来实现本身的人生抱负,可是在面临市场上浩瀚加盟项目标时候,大部门人照旧会慌了神,不知道该如何举办选择。可是呢,近一段时间内,被咨询许多的一个项目就是百草味零食店加盟品...
高端两个字卖鱼店肆取名一个字卖鱼店肆名字大全 节礼卖鱼官方店肆 盐、荷、旋 洁具卖鱼直销店肆 矮、烛、打 耕畜卖鱼旗舰店肆 纪、兼、尊 排枪卖鱼特价店肆 裨、把、钞...
近日,2021北京台春晚结束了录制,语言类节目笑点密集且立意新颖。每年春节,宋小宝又找到哪个大美女“相亲”,已成为观众们的热点话题。今年,“小宝+美女”的模式得以延续,但不再是相亲,而是改为直播带货。...
每日要闻提到网络黑客,好像每个人的第一印象都是他们是隐藏的编程专家。不过,也有一些东西能够用来生成各种木马,让普通网民在几秒钟之内就变成黑客。这些东西通常被称为“特洛伊木马生成器”。听起来很影响,但事...
为什么有人觉得螺蛳粉臭?依旧对它情有独钟,螺狮粉的秘密是什么 米粉想必大多数人都吃过吧,米粉也能制成各种美食,小编今天要说的就是一种让人觉得臭却依旧无法抵挡对它的喜爱的螺蛳粉,那么说到螺蛳粉大家首先...