《WebLogic 漏洞挖掘思路.pdf》由会员分享,可在线阅读,更多相关《WebLogic 漏洞挖掘思路.pdf(34页珍藏版)》请在三个皮匠报告上搜索。
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-20、CVECVE-20八、第三方jar没有更新到最新版本WebLogic默认使用了Apache Commons FileUpload 1.3.3的jar包,这个版本的jar包虽然修复了文件上传漏洞,但是仍然存在任意文件删除漏洞WebLogic分配CVE-2021-2047漏洞编号修复方案把DiskFileItem类加入到黑名单列表九、后反序列化漏洞.context
7、.rebind(kcon2023,foreignOpaqueReference);context.lookup(kcon2023);.CVE-2023-21839 调用栈在反序列化操作完成之后出现的漏洞使用lookup方法查找weblogic资源的时候,weblogic服务端会判断当前对象是否实现了OpaqueReference接口,如果实现了该接口会调用当前对象的getReferent方法。反制WebLogic攻击者weblogic t3/iiop协议漏洞回显原理:1.寻找一个继承java.rmi.Remote的接口,并且该接口有一个方法的返回值为string类型。2.编写一个回显类去实现这
8、个接口。3.在返回值为string类型的方法里写上要执行恶意的payload,在main方法中把当前类绑定到目标服务器中。4.使用cve漏洞去加载这个恶意类。5.攻击者使用lookup方法获取回显类对象,调用方法获取回显结果。攻击者调用lookup方法获取回显数据,此时服务端给客户端(攻击者)返回的是序列化数据,客户端(攻击者)此时会做反序列化处理,把序列化数据转成对象。由于攻击者需要发送cve漏洞,攻击者的classloader会加载cve漏洞的jar包。服务端只需要给客户端(攻击者)返回对应的cve漏洞数据包即可反制客户端(攻击者)。客户端和服务端交互图反制视频(1)反制视频(2)反制视频(3)不仅仅是这三个工具可以被反制感谢您的观看!T H A N KY O UF O RY O U RW A T C H I N G