如何三步跑通 Java RMI 漏洞扫描:remote-method-guesser 完整指南
如何三步跑通 Java RMI 漏洞扫描remote-method-guesser 完整指南【免费下载链接】remote-method-guesserJava RMI Vulnerability Scanner项目地址: https://gitcode.com/gh_mirrors/re/remote-method-guesserremote-method-guesser简称 rmg是一款开源的 Java RMI 漏洞扫描工具一次命令即可完成 RMI 端点的方法枚举与反序列化、codebase 等风险验证适合想自查网络中 RMI 端口是否暴露的安全工程师和 Java 开发者。RMI 端口背后藏着什么风险先交代一句背景RMI远程方法调用是 Java 的一套跨进程打电话机制客户端程序可以像调用本地函数一样调用部署在服务器上的方法。Tomcat、JBoss、Solr 以及不少监控系统的组件都会默认对外暴露 RMI 端口。问题在于RMI 通信靠 Java 序列化对象传数据——相当于把你发什么、服务器就拆开什么的权力交给了网络。拆包过程中如果数据里藏了恶意代码服务器会替你执行这就是反序列化攻击。⚠️ 此外 RMI 历史上还有几个经典坑位Codebase 远程类加载服务器会从客户端指定的 URL 下载类文件换成恶意类就是远程代码执行localhost 限制绕过CVE-2019-2684本应只允许本机执行的 bind/rebind 写操作可被远程触发往注册表里注入恶意对象JMX 凭据泄露JMX 是 Java 管理 JVM 的接口伪造一个 JMX 监听器就能截获客户端连接时提交的账号密码。这些风险对服务方来说通常是静默的——端口一直开着不报错、不告警。rmg 解决的就是这类问题把不知道安不安全变成跑一遍要么报漏洞要么报安全。RMI 漏洞扫描三步跑通工具是 Maven 项目要求 Java 8三步即可用起来git clone https://gitcode.com/gh_mirrors/re/remote-method-guesser cd remote-method-guesser mvn package java -jar target/rmg-*-jar-with-dependencies.jar enum 目标IP 端口第一步拉仓库第二步打包出可执行 jar第三步直接对目标执行enum枚举。手头没有靶机时可以用仓库 docker/ 目录下的示例服务器练手它专门暴露了一组可枚举、可攻击的 RMI 服务。一点提醒serial、listen等动作依赖 ysoserial 生成 payload工具不捆绑它用--yso /path/to/ysoserial.jar指定本地路径即可。RMI 枚举、猜解方法怎么做rmg 提供十几个子命令按你想干什么可以分三组看侦察组scan、enum、known、objidscan IP快速探测 112 个常见 RMI 端口。看到一台跑着 JBoss 或 Solr 的主机但懒得全端口扫时用它先摸一遍enum IP 端口是主力命令列出注册表绑定名及类名、服务器 codebase 配置、JEP290 反序列化过滤是否启用、localhost 绕过是否可用、Security Manager 状态每一项都标注 Vulnerable / Non Vulnerable / Outdated枚举结果里若出现 known class如 JMX 的 RMIServerImpl_Stub接着用known 类名查这个类的说明、可用方法和已知漏洞objid解析 ObjID 字符串其中的时间戳能看出远程对象创建时刻侧面推断服务运行时长。验证组serial、codebase、call、guessserial测反序列化目标可选注册表、DGC分布式垃圾回收器或 Activator。Activator 是遗留组件默认实现没有反序列化过滤基本在任何 Java 版本上都能利用加--signature还能测应用层方法比如参数为HashMap的String login(java.util.HashMap)这是最常用的一条攻击路径codebase验证远程类加载给出类名和你控制的 HTTP 地址服务器若回来请求你的ExampleClass.class攻击即成立call不写一行 Java 代码就能调远程方法——guess 摸出String execute(String cmd)后直接传参观察行为guess用内置词表3000 方法候选猜解方法签名只发送方法哈希默认不触发零参方法对目标影响较小。截获组roguejmx、listen 与 SSRF 选项roguejmx起一个假 JMX 监听器配合bind挂进目标注册表等客户端连上来即可拿到凭据还支持透明转发到真实 JMX业务无感、凭据照拿listen封装了 ysoserial 的 JRMPListener省掉自己写监听代码如果 RMI 服务只监听在目标 localhost 上你只能通过 SSRF 漏洞间接触达那么几乎所有操作都支持--ssrf参数直接生成可投喂的 SSRF payload已经拿到二进制响应时用--ssrf-response喂给 rmg它会按直连的方式解析输出。各动作的参数细节可以看 docs/rmg/actions.md。对防御者意味着什么如果你是服务方rmg 的价值在于把我的 RMI 到底安不安全变成一张能逐项打勾的清单跑一次enum输出直接告诉你哪些项要修——JEP290 未启用、localhost 绕过存在、Activator 暴露、codebase 泄漏了内网路径每项都带配置状态标注可以直接贴进整改跟踪表known动作沉淀了一份已知 RMI 端点类及其关联漏洞的清单方便对照自己的技术栈tests/ 目录提供了 JDK 8/9/11 下每个动作的完整测试用例想复现判定结果或读懂检测逻辑照着重放即可。动态速览v4.4.02023-01起提供官方 Docker 镜像分 slim约 62MB和内置 ysoserial 的完整版约 121MB也支持用仓库内 Dockerfile 自建4.4.12023-06改善了 Java 16 兼容性修正多处文档笔误更早的版本线补齐了 SSRF 支持、ActivatableRef 处理、非默认 serialVersionUID 兼容示例服务器也升级到完整的 Activation System工具曾在 Black Hat USA 2021 Arsenal 场次分享后续更新以稳定性和兼容性为主功能面保持克制。写在最后remote-method-guesser 把RMI 是否可被利用从猜变成了一条enum命令的事。如果你网内有开着端口的 Java 组件建议先起一份仓库自带的示例服务器把 enum → guess → serial 这套流程走一遍再对着真实目标下手 【免费下载链接】remote-method-guesserJava RMI Vulnerability Scanner项目地址: https://gitcode.com/gh_mirrors/re/remote-method-guesser创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻