CVE-2018-2628-WebLogic-Deserialization
forg12

描述

​ 远程攻击者可利用该漏洞在未授权的情况下发送攻击数据,通过T3协议(EJB支持远程访问,且支持多种协议。这是Web ContainerEJB Container的主要区别)在Weblogic Server中执行反序列化操作,利用RMI(远程方法调用) 机制的缺陷,通过JRMP协议(Java Remote Messaging Protocoljava远程消息交换协议)达到执行任意反序列化payload的目的。

影响版本

Weblogic 10.3.6.0

Weblogic 12.1.3.0

Weblogic 12.2.1.2

Weblogic 12.2.1.3

漏洞检测

通过一下的poc脚本验证是否存在该漏洞。

下载地址

1
https://github.com/jas502n/CVE-2018-2628
1
python2 CVE-2018-2628-poc.py 192.168.3.50 7001

image-20221026095904011

image-20221026095919123

环境搭建

这里使用vulnhub环境来复现该漏洞。

1
2
3
4
#进入漏洞目录
cd vulhub/weblogic/CVE-2018-2628
#开启环境
docker-compose up -d

image-20221026094930494

查看环境

1
http://192.168.3.50:7001/

image-20221026100003315

复现过程

漏洞利用工具下载地址:

1
https://github.com/jas502n/CVE-2018-2628

使用脚本上传jsp文件。

image-20221026100958408

image-20221026101508059

使用另外一个脚本实现交互式。

image-20221026101913522

修复建议

1、此漏洞产生于Weblogic T3服务,当开放Weblogic控制台端口(默认为7001端口)时,T3服务会默认开启。关闭T3服务,或控制T3服务的访问权限,能防护该漏洞。对于不在Oracle官方支持范围内的版本,由于没有最新补丁,推荐采用此种方式进行修复。同时,Weblogic采用黑名单的方式进行反序列化漏洞的修复,存在被绕过的风险,因此控制T3服务为防护Weblogic RMI这类反序列化漏洞的有效方式。控制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)保存后需重新启动,规则方可生效。

2、更新Oracle官方发布的最新补丁,同时升级jdk至1.7.0.21以上版本。

3、如以上两种策略都无法采用,则可以考虑用更改代码的方式。以10.3.6.0为例,在weblogic.utils.io.oif.WebLogicFilterConfig的黑名单DEFAULT_BLACKLIST_CLASS中添加”java.rmi.server.RemoteObjectInvocationHandler”,编译并更新swlclient.jar、wlthint3client.jar这两个用到该类的包