CVE-2024-21182漏洞深度分析:Oracle WebLogic Server T3/IIOP反序列化RCE
WebLogic的T3协议反序列化漏洞已经成了安全圈的"老朋友",但CVE-2024-21182的利用链比以往更隐蔽。本文从协议层面拆解这个漏洞。
漏洞档案
| 字段 | 值 |
|---|---|
| CVE编号 | CVE-2024-21182 |
| CVSS评分 | 9.8(Critical) |
| 攻击向量 | Network |
| 攻击复杂度 | Low |
| 所需权限 | None |
| 影响组件 | Oracle WebLogic Server |
| 影响版本 | 12.2.1.4.0, 14.1.1.0.0 |
| 修复CPU | 2024年4月Critical Patch Update |
T3协议与反序列化
T3协议概述
T3是WebLogic的私有RMI传输协议,用于服务器间通信和客户端连接。默认监听7001端口,与HTTP共用。
Client → T3 Handshake → WebLogic Server
↓
T3 Header (10 bytes)
↓
Serialized Java Objects (Stubs, DGC messages)
T3协议的核心问题在于:协议层直接反序列化Java对象,无类型白名单限制。这与Java RMI的JRMP协议类似,但WebLogic的实现更加复杂。
漏洞触发路径
T3 Connection → IncomingMessage → readObject()
→ ClusterMasterRemote_Stub (恶意构造)
→ Method.invoke() via Proxy
→ Runtime.exec()
攻击者通过T3协议发送精心构造的序列化数据,利用WebLogic内部的ClusterMasterRemote_Stub类作为Gadget,绕过已有的反序列化过滤器。
与历史漏洞对比
| CVE | 年份 | 利用链 | 补丁绕过 |
|---|---|---|---|
| CVE-2015-4852 | 2015 | commons-collections | 首次T3反序列化 |
| CVE-2017-3248 | 2017 | JRMP | 绕过黑名单 |
| CVE-2018-2628 | 2018 | JRMP2 | 绕过resolveClass |
| CVE-2020-2555 | 2020 | Coherence | 新Gadget链 |
| CVE-2023-21931 | 2023 | ClusterMaster | 绕过白名单 |
| CVE-2024-21182 | 2024 | ClusterMaster_V2 | 绕过过滤器 |
利用工具
公开的利用工具包括:
- CVE-2024-21182-Exploit:Python实现,支持命令执行和内存马注入
- weblogic-framework:Java实现,支持多种利用模式
# 使用Python exploit
python3 exploit.py -t 192.168.1.100:7001 -c "id"
# 使用weblogic-framework
java -jar weblogic-framework.jar -t 192.168.1.100:7001 -m shell
检测方案
网络层检测
# 检测T3协议握手
tcpdump -i eth0 port 7001 -A | grep "t3 "
# 检测IIOP协议
tcpdump -i eth0 port 7001 -A | grep "GIOP"
日志检测
# WebLogic日志路径
tail -f /opt/weblogic/user_projects/domains/base_domain/servers/AdminServer/logs/AdminServer.log | grep -i "deserialize\|ClassNotFound\|InvalidClass"
Yara规则
rule WebLogic_T3_Deserialization {
meta:
description = "Detects T3 protocol deserialization exploitation"
author = "Security Research"
strings:
$t3_header = "t3 " ascii
$java_serial = {ac ed 00 05}
$runtime = "java.lang.Runtime" ascii
condition:
$t3_header at 0 and ($java_serial or $runtime)
}
修复方案
临时缓解
禁用T3协议(如果业务允许):
# WebLogic控制台
# Environment → Servers → AdminServer → Protocols
# 取消勾选 "Enable T3 Protocol"
# 或通过WLST
connect('weblogic', 'password', 't3://localhost:7001')
edit()
startEdit()
cd('/Servers/AdminServer/WebServer/AdminServer/WebServer')
set('FrontendHost', '')
set('FrontendHTTPPort', '')
set('FrontendHTTPSPort', '')
save()
activate()
过滤T3/IIOP流量:
# iptables规则
iptables -A INPUT -p tcp --dport 7001 -m string --string "t3 " --algo bm -j DROP
iptables -A INPUT -p tcp --dport 7001 -m string --string "GIOP" --algo bm -j DROP
根本修复
安装2024年4月CPU补丁:
# 下载补丁
# Oracle Support → Patches & Updates → Search: 36422487
# 应用补丁
cd $ORACLE_HOME
opatch apply
# 重启WebLogic
$DOMAIN_HOME/bin/stopWebLogic.sh
$DOMAIN_HOME/bin/startWebLogic.sh
企业级防御策略
网络分段
- WebLogic服务器部署在独立VLAN
- T3端口仅允许管理网段访问
- 使用堡垒机进行远程管理
运行时保护
- 部署RASP(Runtime Application Self-Protection)
- 启用Java Security Manager
- 配置反序列化白名单
持续监控
- SIEM集成WebLogic日志
- 网络流量异常检测
- 定期漏洞扫描
总结
CVE-2024-21182再次证明了WebLogic T3协议的攻击面之广。从2015年至今,T3反序列化漏洞已经出现了至少10个变种,每次都通过不同的Gadget Chain绕过补丁。
对运维团队的建议:
- 立即评估是否需要T3协议,不需要则禁用
- 72小时内安装2024年4月CPU补丁
- 部署网络层T3/IIOP流量过滤
- 建立WebLogic反序列化攻击的检测规则
- 长期考虑迁移到Spring Boot等更现代的应用服务器
数据来源与声明:
- Oracle Critical Patch Update Advisory — 2024年4月CPU公告
- NIST NVD - CVE-2024-21182 — 漏洞评分
- FoxGlove Security — WebLogic T3反序列化研究
- OWASP Deserialization Cheat Sheet — 反序列化防护指南
- 本文基于公开漏洞信息分析,不涉及未公开的利用细节
- 本文不构成安全或法律建议
评论