因为条件不成立,所以继续进入return当中,我们F7跟进
往后执行,可以发现这几个方法是对数据流进行分块处理,将序列化部分分块,依次解析每块的类,然后去执行
我们直接在InboundMsgAbbrev#resolveClass()方法下个断点,而此处,也就是打补丁的地方,此处打上补丁,从而出现了cve-2016-0638;这是后话。而我们看到了AnnotationInvocationHandler。这不就是CC1中的反序列化入口点吗,我们进入看看
可以看到一个很有意思的地方,那就是Class.forname(),通过反射获取加载指定的类。
而这之后执行,我们可以发现这些获取的都是CC1利用链中所需要的类。这就很有意思了~~
F9不断的执行结束后可以发现,这边创建了该文件。那么我们重新发包一下,直到遇到java.lang.Override不按F9了。我们直接F7一步步慢慢的看
我们可以看到这不就是CC1链中的触发方法吗??这里就很佩服大佬们了
0x05 漏洞原理与总结从入口点开始weblogic.rjvm.InboundMsgAbbrev#readObject方法开始。通过read()方法,读取T3数据流的序列化部分依次分块解析类。InboundMsgAbbrev#resolveClass()内部使用Class.forName来从类序列化获取到对应类的一个Class的对象。进行相对应的点实例化并读取了AnnotationInvocationHandler触发了此处CC1的利用链。最后在AbstractMapDecorator#entrySet()方法触发,达到了rce目的。此漏洞之后有必要再看看,咳咳