这些依赖会导致一个问题,shiro必须使用Commons-Beanutils这个依赖,但不需要Commons-Collections,因为shiro只需要用到Commons-Beanutils中的一些类,不涉及Commons-Collections,因此前面的利用链会直接失效,我们需要对BeanComparator中的comparator属性修改为jdk自带的类,从而避免依赖问题。 shiro的反序列化漏洞原理就不详细展开了(...
学习和尝试从commons-beanutils反序列化gadget到shiro反序列化漏洞利用,并在shiro无其它依赖的情况下,实现漏洞利用和内存马注入 目录 4.2 shiro反序列化利用--注入内存马 0 前言 其实shiro的反序列化过程看过,原理也理解,就是没空复现一遍,正好学习ysoserial序列化系列学习之一Commons-Beanutils,复现一下shiro...
通过反射机制修改queue中数组保存的对比对象为内置了攻击代码的templates。 返回queue,将其生成序列化数据。 漏洞触发逻辑: 反序列化的queue的时候,其对应的PriorityQueue类readObject函数会依次读取序列化数据中的元素,放入到队列中。然后,调用heapify函数进行排序操作。 最终,会调用到siftDownUsingComparator函数,其中会调用co...
通过反射机制修改queue中数组保存的对比对象为内置了攻击代码的templates。 返回queue,将其生成序列化数据。 漏洞触发逻辑: 反序列化的queue的时候,其对应的PriorityQueue类readObject函数会依次读取序列化数据中的元素,放入到队列中。然后,调用heapify函数进行排序操作。 最终,会调用到siftDownUsingComparator函数,其中会调用co...
在之前的CC2/4的链中我们用到了java.util.PriorityQueue的readObject触发反序列化,主要是通过调用了其TransformingComparator的compare方法,进而调用了transform链的调用 而CommonsBeanutils 利用链中核心的触发位置就是 BeanComparator.compare() 函数,当调用 BeanComparator.compare() 函数时,其内部会调用我们前面说的 getPr...
返回queue,将其生成序列化数据。 漏洞触发逻辑: 反序列化的queue的时候,其对应的PriorityQueue类readObject函数会依次读取序列化数据中的元素,放入到队列中。然后,调用heapify函数进行排序操作。 最终,会调用到siftDownUsingComparator函数,其中会调用comparator的compare方法: ...
前几天看到 github 上的 ysoserial 更新至0.0.4,增加了 CommonsBeanUtils 的Java反序列化 Payload 生成代码,原以为跟前面的 CommonsCollections 的原理一样,仔细看了一遍思路大不相同。CommonsBeanutilsCollectionsLogging1 主要依赖的 jar 包有:commons-collections(2.0-3.2.2), commons-beanutils-1.9.2, commons-...
首先根据BeanComparatorcomparator=newBeanComparator("lowestSetBit");可以看出,这个漏洞的触发类应该是位于org.apache.commons.beanutils.BeanComparator类。根据介绍和网上的文章可以定位到触发方法compare。org.apache.commons.beanutils.BeanComparator是Apache Commons BeanUtils库中的一个类,用于比较JavaBean对象。它实现了Jav...
commons-beanutils本来依赖于commons-collections,但是在Shiro中,它的commons-beanutils虽然包含了一部分commons-collections的类,但却不全。这也导致,正常使用Shiro的时候不需要依赖于commons-collections,但反序列化利用的时候需要依赖于commons-collections。 难道没有commons-collections就无法进行反序列化利用吗?当然有。
Java CommonsBeanUtils1 反序列化手写 EXP 0x01 前言 因为后续的漏洞利用当中,CommonsBeanUtils 这一条链子还是比较重要的,不论是 shiro 还是后续的 fastjson,都是比较有必要学习的。 在已经学习一些基础知识与 CC 链的情况下,最终链子就可以自己跟着 yso 的链子利用走一遍写 EXP 了。