Java RMI 漏洞扫描快速指南:从注册表枚举到反序列化利用
2026/8/24 1:55:23 网站建设 项目流程

Java RMI 漏洞扫描快速指南:从注册表枚举到反序列化利用

【免费下载链接】remote-method-guesserJava RMI Vulnerability Scanner项目地址: https://gitcode.com/gh_mirrors/re/remote-method-guesser

remote-method-guesser(rmg)是一款开源的 Java RMI 漏洞扫描工具,一条命令即可完成 RMI 注册表枚举、远程方法猜测与 RMI 反序列化测试,是验证 RMI 端点常见风险的一站式工具。

RMI 端点为什么值得多看一眼

Java RMI 是 JDK 自带的远程调用机制,年代久远但至今没退休,JBoss、Solr、Tomcat 等中间件都常把它带上船,内网里并不罕见。而且它历史包袱不少:注册表绑定接口曾出现 localhost 限制绕过(CVE-2019-2684)、通信全程使用 Java 序列化、Codebase 机制还允许服务端从远程 URL 加载类——每一样都是已知攻击面。

实际环境里,RMI 端口往往不直接暴露在公网,却能通过 SSRF 或内网横向到达。做 RMI 漏洞检测时,不能靠"端口没开放"来下结论,得有工具实测。

工具定位:rmg 能做什么

一句话:rmg 把 RMI 常见漏洞的枚举、猜测、调用、利用收进同一个命令行工具里。各操作用途如下:

操作用途
enumRMI 注册表枚举:列出绑定名、Codebase 配置与各组件漏洞状态
bind向注册表绑定新对象,指向你自己的监听器
rebind覆盖已有绑定名,指向你自己的监听器
unbind从注册表删除指定绑定名
guess基于词表猜测目标上存在哪些远程方法
call按指定签名直接调用远程方法,无需写 Java 代码
codebase测试注册表 / DGC / Activator / 应用层四类组件的远程类加载风险
serial对 RMI 默认组件与应用层方法发起反序列化攻击
roguejmx架设伪 JMX 监听器,捕获接入的 JMX 客户端凭据

其中 bind / rebind / unbind 三件套常用来验证 localhost 绕过:只要远端能改注册表绑定,就能把现有服务条目指向你自己的服务器。

三步跑起 RMI 扫描 🚀

  1. 克隆源码:git clone https://gitcode.com/gh_mirrors/re/remote-method-guesser
  2. 构建可执行 jar:mvn package
  3. 首次 RMI 注册表枚举:java -jar target/rmg-*-jar-with-dependencies.jar enum 192.168.1.100 9010

输出会直接列出注册表的绑定名、每个绑定对应的类,以及其后的 Endpoint 和 ObjID。

从枚举到利用:一条完整攻击链

先枚举:让工具替你下结论

enum 近期的输出按检查项分组:绑定名、Codebase、反序列化过滤器、Security Manager、JEP290 状态等,每项都带明确的 "Vulnerable / Non Default" 结论,不用再对着原始异常日志自己判断配置新旧。

再猜测:摸清远程方法清单

guess 用内置词表逐个发送方法哈希,命中即表示目标真实存在该远程方法。实现重构后猜测速度最多提升 8 倍,命中的方法就是你后续 call 与利用的清单。

再调用:确认接口真的可用

call 让你按签名直接调用猜到的方法,不用手写 Java 桩。比如目标有String execute(String cmd)这样的方法,直接让它在远端请求你的 HTTP 服务器,就能验证命令执行是否成立。

最后利用:三种常见攻击路径

  • codebase:RMI 的 Codebase 机制允许服务端从你指定的 URL 动态加载类。rmg 可对注册表、DGC(分布式垃圾回收器)、Activator、应用层四类组件分别测试,本地 HTTP 服务器收到 .class 请求基本就中招了。
  • serial:反序列化是 Java 把字节流还原成对象的过程,攻击者的恶意代码可能在此期间执行;RMI 通信恰好全程依赖它。serial 可对注册表 / DGC / Activator(内置 ysoserial 支持)以及接收非基本类型参数的应用层方法打 payload。目标 RMI 不可直达时,--ssrf能把操作打包成单包(SingleOp)载荷,让内网带 SSRF 的 HTTP 服务代为转发。
  • roguejmx:JMX 是 Java 的管理监控接口。roguejmx 起一个伪 JMX 监听器,配合 rebind 把注册表条目指过去,等 JMX 客户端连上来,用户名密码就被截获。

动手之前:安全边界

上述操作请只针对自己拥有或明确授权的测试资产执行,注册表修改与反序列化攻击都可能影响真实业务。练手可以直接用仓库自带的两个示例服务器:docker 目录下的 example-server 提供可枚举、可攻击的常规 RMI 服务,ssrf-server 则提供一个带 SSRF 的 HTTP 服务加一组仅监听 localhost 的 RMI 服务,专门用来练--ssrf场景。

写在最后

如果你的环境里有 Java 技术栈,把 RMI 端点纳入常规排查是值得的:enum + guess + serial 的组合几分钟内就能给出一张完整风险图。更多操作细节与 SSRF 载荷格式,可参考项目 README。

【免费下载链接】remote-method-guesserJava RMI Vulnerability Scanner项目地址: https://gitcode.com/gh_mirrors/re/remote-method-guesser

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

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

立即咨询