影响范围

Oracle WebLogic Server 10.3.6 Oracle WebLogic Server 12.1.2 Oracle WebLogic Server 12.1.3 Oracle WebLogic Server 12.2.1

漏洞原理

需要打补丁:p20780171_1036_Generic 和 p22248372_1036012_Generic,或者它们的集合补 丁 p21984589_1036_Generic

添加了一个 ClassFilter 类实现黑名单功能,作用在以下类的反序列化过程中:

weblogic.rjvm.InboundMsgAbbrev.class$ServerChannelInputStream
weblogic.rjvm.MsgAbbrevInputStream.class
weblogic.iiop.Utils.class

绕过思路:找到一个类,它可以封装我们的恶意对象,并在反序列化时(比如 readObject) 创建一个序列化流来反序列化恶意对象,但是又不能使用上面被检查的 ServerChannelInputStream 和 MsgAbbrevInputStream

最后找到可以利用的类是 weblogic.jms.common.StreamMessageImpl,利用点在它的 readExternal 方法中

可见通过 StreamMessageImpl 来包装恶意对象,在执行 readExternal 时会新建一个 ObjectInputStream 来反序列化我们的恶意对象,所以不会经过 weblogic 的过滤