记一次失败的帆软的反序列化链挖掘

前言:自帆软的反序列化黑名单出来了一次被绕过,但是最新版目前已经无法利用,然后现在又想突发奇想的硬刚一波黑名单,于是就有了这里的失败的帆软的反序列化链挖掘的过程

其实看了挺久的,其他的就不记录的了,因为连sink点都没找到

因为黑名单中直接存在了java.lang.reflect.Proxy,那么我肯定就不去找相关的动态代理的invoke的链了

com.fr.third.org.hsqldb.types.JavaObjectDataInternal

通过tabby搜索找到了一个比较有意思的类,这个类能够直接在构造函数中进行二次反序列化com.fr.third.org.hsqldb.types.JavaObjectDataInternal

public JavaObjectDataInternal(byte[] data) {

    try {
        object = InOutUtil.deserialize(data);
    } catch (Exception e) {
        throw Error.error(ErrorCode.X_22521, e.toString());
    }
}

org.apache.commons.collections4.functors.InstantiateFactory

于是我直接去找了能够实例化的,通过tabby搜索找到了cc4中的org.apache.commons.collections4.functors.InstantiateFactory,发现这个类是一个天然的实例化类,而且我还发现竟然不是在黑名单中的

org.apache.commons.collections4.functors.FactoryTransformer

因为这个org.apache.commons.collections4.functors.InstantiateFactory类是一个Factory类的create函数的实例化,所以这里还需要找一个配套的类,没想到还真有一个org.apache.commons.collections4.functors.FactoryTransformer,并且这个类同样也没有在黑名单中,到了这里我就开始偷乐了

配合着触发org.apache.commons.collections4.functors.FactoryTransformer的transform方法的有条公开链是LazyMap+TiedMapEntry,但是这两个类都是在黑名单中

org.apache.commons.collections4.map.DefaultedMap

通过tabby寻找我发现存在一个DefaultedMap作为替代品可以进行触发,到这里的话就是DefaultedMap+TiedMapEntry

到了这里准备构造整体的流程的发现InstantiateFactory无法被反序列化,仔细一看原来InstantiateFactory被阉割了,导致没有实现反序列化接口,心里直接发凉了,我就知道米有那么简单,那么到这里就直接结束了,这篇就直接做个笔记留个念吧

posted @ 2022-10-06 19:10  zpchcbd  阅读(1593)  评论(0)    收藏  举报