漏洞概述

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

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

基础知识

T3协议

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

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)。

解决方案

关注Oracle官方CPU更新补丁

控制T3协议的访问

此漏洞产生于WebLogic的T3服务,因此可通过控制T3协议的访问来临时阻断针对该漏洞的攻击。当开放WebLogic控制台端口(默认为7001端口)时,T3服务会默认开启。

具体操作:

(1)进入WebLogic控制台,在base_domain的配置页面中,进入“安全”选项卡页面,点击“筛选器”,进入连接筛选器配置。

(2)在连接筛选器中输入:weblogic.security.net.ConnectionFilterImpl,在连接筛选器规则中输入:127.0.0.1 allow t3 t3s,0.0.0.0/0 deny t3 t3s(t3和t3s协议的所有端口只允许本地访问)。

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

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

最后修改:2021 年 03 月 09 日
如果觉得我的文章对你有用,请随意赞赏