1、WebLogic 漏洞挖掘思路演讲人:丁立洁(thiscodecc)个人介绍 丁立洁(thiscodecc)墨云科技安全研究员 多次收到IBM、VMware、Oracle、OpenJDK 等厂商公开致谢 近两年收到Oracle WebLogic 14个CVE编号 https:/ resolveClass 方法来过滤具体的黑名单列表一、执行了从bytes到ObjectInputStream的二次反序列化过程二、用一个类似功能的class三、不同package下的class四、自定义序列化过程的调用链五、在反序列化的过程中调用了黑名单列表的class六、不同的weblogic发行版本黑名单列表不一
2、样七、一条新的调用链八、第三方jar没有更新到最新版本九、后反序列化漏洞如何绕过黑名单列表?一、执行了从bytes到ObjectInputStream的二次反序列化过程CVE-2016-0638修复前修复后新的ObjectInputStream类没有黑名单列表CVE-2016-3510修复前修复后在支持JEP290的JDK中无法利用这种方法jep290机制用来解决不安全的反序列化风险自定义过滤器全局过滤器内置过滤器其核心就是提供了一个ObjectInputFilter接口,在进行反序列化操作的时候,会调用该接口的checkInput方法,JDK自带的sun.misc.ObjectInputFi
3、lter$Config$Global实现了该接口,需要自定义过滤器的话实现该接口,然后在调用ObjectInputStream.setInternalObjectInputFilter赋值自定义的filter即可。在JDK 8u121中开始支持JEP290特性二、用一个类似功能的class从CVE-2020-2555到CVE-2020-14825的绕过方法CVE-2020-2555调用链如下CVE-2020-2555修复方案修复前修复后CVE-2020-2883绕过CVE-2020-2555补丁三、不同package下的classCVE-?/CVE-2018-3245三、不同package下的
4、classCVE-?/CVE-2021-2064只影响12.1.3版本四、自定义序列化过程的调用链CVE-2020-14756使用自定义的反序列化调用链来绕过黑名单列表使用loadClass和newInstance进行对象还原CVE-2020-14756调用链五、在反序列化过程中调用黑名单列表的classCVE-2021-2394绕过方法MethodAttributeAccessor类修复CVE-2020-14825时已加入到黑名单CVE-2021-2394调用链六、不同weblogic发行版本黑名单列表不一样WebLogic 12.1.3版本 2020年10月份补丁WebLogic 12.2
5、.1.3版本 2020年10月份补丁红框中的黑名单类是修复CVE-2020-14825漏洞,这个漏洞是影响WebLogic 12.1.3版本的,但是在2020年 10月份补丁中没有加入到12.1.3版本中,在2021年1月份补丁中才进行修复并额外分配了CVE-2021-2108忘记修复了?直接捡漏?七、一条新的调用链由于WebLogic是采用黑名单进行修复漏洞,WebLogic默认加载了很多jar包,WebLogic 10.3.6版本默认加载了874个jar包,在这些jar包中组合一条新的反序列化调用链就可以直接绕过黑名单列表。新的反序列化调用链有:CVE-2015-4852、CVE-2016
6、-0638、CVE-2017-3248、CVE-2020-2555、CVE-2020-14756、CVECVE-20212021-2 2382382、CVECVE-20222022-2135021350、CVECVE-20232023-2183721837八、第三方jar没有更新到最新版本WebLogic默认使用了Apache Commons FileUpload 1.3.3的jar包,这个版本的jar包虽然修复了文件上传漏洞,但是仍然存在任意文件删除漏洞WebLogic分配CVE-2021-2047漏洞编号修复方