丽水市网站建设_网站建设公司_百度智能云_seo优化
2026/1/18 18:42:40 网站建设 项目流程

0x01.Marshalsec 是什么

Marshalsec 是一个用于研究和利用 Java 反序列化、JNDI 以及 RMI 安全问题的攻击与测试框架,由著名 Java 安全研究员 Moritz Bechler 开发。该工具并非传统意义上的“漏洞利用脚本”,而是一组可快速启动恶意服务端组件的集合,用于配合目标 Java 应用触发不安全的对象加载或反序列化行为。
从攻击视角看,Marshalsec 的核心价值在于:它实现了多种“恶意中间件服务”,用于在协议层面欺骗目标 JVM 主动执行攻击逻辑。

0x02 Marshalsec 解决的核心问题

在 Java 漏洞利用中,攻击者通常面临一个关键难点:如何让目标 JVM 在“看似正常的协议交互”中,执行攻击者的代码?
Marshalsec 的解决思路是:不直接向目标推送 payload 而是构造合法协议响应诱导 JVM 在反序列化 / JNDI 查找 / RMI 交互过程中自行加载并执行恶意对象或类。因此,Marshalsec 的本质并不是“发 payload”,而是扮演协议中的“可信服务端角色”。

0x03 Marshalsec 的整体架构思想

Marshalsec 采用模块化设计,不同模块对应不同的 Java 安全攻击面:

                 ┌────────────┐│  目标 JVM  │└─────▲──────┘│┌─────────────────┼─────────────────┐│                 │                 │
RMI Registry        LDAP Server       JRMP Listener(JNDI)              (JNDI)            (RMI 序列化)

攻击者通过 Marshalsec 启动其中某一类服务,等待目标 JVM 主动连接并触发漏洞。

0x04 Marshalsec 的主要模块详解

JNDI 相关模块

(1)RMIRefServer
作用:启动一个恶意 RMI Registry,在 JNDI lookup 时返回包含远程 Codebase 的 Reference 对象。
攻击条件:

  • JDK 版本允许远程 Codebase 加载
  • com.sun.jndi.rmi.object.trustURLCodebase = true
  • java.rmi.server.useCodebaseOnly = false

利用原理:

  • 返回 ReferenceWrapper
  • 指定 className
  • 指定 codebase URL
  • 目标 JVM 从 HTTP 服务器加载恶意类

(2)LDAPRefServer
作用:模拟一个恶意 LDAP 服务,在 JNDI 查询中返回可控的 LDAP Entry,触发远程类加载或对象实例化。
应用场景:

  • Log4j2 LDAP 利用
  • Spring JNDI 注入
  • Fastjson JNDI 场景

RMI 反序列化模块

(1)JRMPListener
作用:监听 RMI JRMP 协议请求,并在反序列化阶段发送恶意序列化对象。
特点:

  • 不依赖 JNDI
  • 利用原生 Java RMI 序列化机制
  • 常与 ysoserial gadget 链配合使用

HTTP Server 模块

作用:提供远程 Codebase,承载恶意 .class 文件。Marshalsec 本身并不强制内置 HTTP Server,通常配合:python3 -m http.server 8000或 Nginx / Apache 使用。

0x05 Marshalsec 与 ysoserial 的区别与关系

工具 关注点
ysoserial 构造反序列化 payload
marshalsec 承载与投递 payload 的服务端

ysoserial 负责“造炸弹”,marshalsec 负责“引爆环境”。在实际利用中,两者经常组合使用。

0x06 Marshalsec 的典型使用场景

1.JNDI注入漏洞复现:Log4j2 JNDI RCE、Spring JNDI 注入、Weblogic JNDI 利用
2.Java 反序列化漏洞研究:RMI 接口反序列化、T3 协议利用、JRMP 利用链测试
3.安全研究与防护验证:验证 JDK 补丁效果、验证 trustURLCodebase 默认关闭后的防护能力、测试 WAF / RASP 对 JNDI 行为的拦截能力

0x07 Marshalsec 的安装方式

//源码编译
git clone https://github.com/mbechler/marshalsec.git
cd marshalsec
mvn clean package -DskipTests
//生成文件:target/marshalsec-*-SNAPSHOT-all.jar

0x08 Marshalsec的安全意义

Marshalsec 并非自动化攻击工具,而是 Java 安全研究中的基础设施组件。它通过实现恶意 RMI、LDAP、JRMP 等协议服务,揭示了 Java 在对象查找、远程加载和反序列化设计上的历史性安全问题。理解 Marshalsec 的工作原理,有助于从协议和 JVM 行为层面理解 JNDI 与反序列化漏洞的本质。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询