【ADLab原创漏洞】WebLogic反序列化漏洞CVE-2018-2893

发布时间 2018-07-18

一、漏洞概述


      Oracle官方发布了7月份的关键补丁更新CPU(Critical Patch Update),其中包含一个启明星辰ADLab安全研究人员发现并通报给Oracle的高危远程代码执行漏洞(CVE-2018-2893),通过该漏洞,攻击者可以在未授权的情况下远程执行任意代码。该漏洞通过JRMP 协议利用RMI机制的缺陷达到执行任意反序列化代码的目的。攻击者可以在未授权的情况下将payload封装在T3协议中,通过对T3协议中的payload进行反序列化,从而实现对存在漏洞的WebLogic组件进行远程攻击,执行任意代码并可获取目标系统的所有权限。


二、漏洞影响范围


        WebLogic 10.3.6.0
        WebLogic 12.1.3.0
        WebLogic 12.2.1.2
        WebLogic 12.2.1.3

        以上均为官方支持的版本。


三、基础知识


1、T3协议

        WebLogic Server 中的 RMI 通信使用 T3 协议在WebLogic Server和其他 Java程序(包括客户端及其他 WebLogic Server 实例)间传输数据(序列化的类)。由于WebLogic的T3协议和Web协议共用同一个端口,因此只要能访问WebLogic就可利用T3协议实现payload和目标服务器的通信。


2、JRMP协议

        RMI目前使用Java远程消息交换协议JRMP(Java Remote Messaging Protocol)进行通信。JRMP协议是专为Java的远程对象制定的协议。


四、漏洞简析


        为了阻止恶意反序列化,WebLogic已经设置了8个黑名单。如下图所示:

   


        并且对commons.collections这个包也做了限制。核心利用类调用readObject方法反序列化时都进行了检查。如下图所示:

   


        但经过启明星辰ADLab安全研究人员深入研究分析后发现,JDK固有类中存在可被序列化并且在反序列化时可以调用RMI的类,使用该类可构造出绕过WebLogic黑名单以及commons.collections限制的payload,ADLab第一时间通报给Oracle官方并获得相应的漏洞编号(CVE-2018-2893)。


五、解决方案


1、关注Oracle官方CPU更新补丁
2、控制T3协议的访问
        此漏洞产生于WebLogic的T3服务,因此可通过控制T3协议的访问来临时阻断针对该漏洞的攻击。当开放WebLogic控制台端口(默认为7001端口)时,T3服务会默认开启。
        具体操作:
        a)进入WebLogic控制台,在base_domain的配置页面中,进入“安全”选项卡页面,点击“筛选器”,进入连接筛选器配置。
        b)在连接筛选器中输入:weblogic.security.net.ConnectionFilterImpl,在连接筛选器规则中输入:127.0.0.1 * * allow t3 t3s,0.0.0.0/0 * * deny t3 t3s(t3和t3s协议的所有端口只允许本地访问)。

        c)保存后需重新启动,规则方可生效。

   


3、升级到 jdk-8u20以上的版本。