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

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

其实看了挺久的,其他的就不记录的了,因为连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 @   zpchcbd  阅读(1468)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示