Java安全之初探weblogic T3协议漏洞

Java安全之初探weblogic T3协议漏洞

文章首发自安全客:Java安全之初探weblogic T3协议漏洞

0x00 前言

在反序列化漏洞里面就经典的还是莫过于weblogic的反序列化漏洞,在weblogic里面其实反序列化漏洞利用中大致分为两种,一个是基于T3协议的反序列化漏洞,一个是基于XML的反序列化漏洞。当然也还会有一些SSRF和任意文件上传漏洞,但是在这里暂且不谈。

下面来列出两个漏洞类型的一些漏洞编号

基于T3协议漏洞: CVE-2015-4582、CVE-2016-0638、CVE-2016-3510、CVE-2018-2628、CVE-2020-2555、CVE-2020-2883

基于XML:CVE-2017-3506、CVE-2017-10271、CVE-2019-2729

粗略的列了几个代表性的CVE漏洞。

在Weblogic中,有部分漏洞是基于上几个漏洞的补丁进行的一个绕过。而在前一段时间内,CVE-2020-14882和CVE-2020-14883里面14883就是基于14882的补丁去进行的一个绕过。

0x01 浅析T3协议 关于T3协议的絮絮叨叨

关于这个T3协议,他是Weblogic里面独有的一个协议,在前面写的一篇关于RMI的文章里面提到过RMI的传输过程是传输的序列化数据,而在接收后会进行一个反序列化的操作。在Weblogic中对RMI规范的实现使用T3协议。而在T3的传输过程也是一样的。

下面对T3协议的传输过程、如何执行的反序列化操作、T3协议的执行流程去进行一个分析。

在之前先来看一张weblogic进行反序列化的执行流程图。

Java安全之初探weblogic T3协议漏洞

这里借用了一个图片,在该漏洞的一个入口点是weblogic里面的方法调用了原生的反序列化方法进行一个反序列化操作。

而这里还需要知道该方法在传输完成后是如何进行调用的。关于原生反序列化的操作原理这里就不讲了,可以看到我的该篇文章。

Java安全之原生readObject方法解读,这里主要来讲一下T3协议的相关内容。

T3协议概述

WebLogic Server 中的 RMI 通信使用 T3 协议在 WebLogic Server 和其他 Java 程序(包括客户端及其他 WebLogic Server 实例)间传输数据。

T3协议结构

在T3的这个协议里面包含请求包头和请求的主体这两部分内容。

请求包头

这里拿2个CVE-2015-4852的POC来进行讲解。

Java安全之初探weblogic T3协议漏洞

Java安全之初探weblogic T3协议漏洞

t3 12.2.1 AS:255 HL:19 MS:10000000 PU:t3://us-l-breens:7001

这里就是他的请求包的头。

使用Wireshark对它进行抓包,由于配置的网卡抓不到包,靶机地址会在23段和1段的ip中来回切换。

这里为了能抓到包配置了一个nat模式的网卡,进行抓包,地址为192.168.23.130,改一下poc的目标地址,发送payload。

Java安全之初探weblogic T3协议漏洞

Java安全之初探weblogic T3协议漏洞

在这里在发送请求包头的时候,打了个断点,让脚本只发送请求包头数据,方便抓包。打开Wireshark抓包后发现,发送该请求包头后,服务端weblogic会有一个响应

Java安全之初探weblogic T3协议漏洞

HELO后面的内容则是被攻击方的weblogic版本号,在发送请求包头后会进行一个返回weblogic的版本号。

请求主体

在T3协议里面传输的都是序列化数据,这个在前面也说过,而传输中的数据分为七部分内容。第一部分为协议头。即t3 12.2.3\nAS:255\nHL:19\nMS:10000000\n\n这串数据。

来看到下面的图,图片取自z_zz_zzz师傅的修复weblogic的JAVA反序列化漏洞的多种方法文章。

Java安全之初探weblogic T3协议漏洞

Java安全之初探weblogic T3协议漏洞

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyyydp.html