java 怎么通过url获取远程服务器上某个文件夹下的所有文件_JMX远程代码漏洞研究...

本文深入探讨了Java Management Extensions (JMX) 中的远程代码执行漏洞,重点讲解了JMX服务、MBean、MBeanServer以及特殊MBean MLet的工作原理和利用方法,展示了如何通过MLet加载远程MBean执行任意代码。文章还概述了向远程MBeanServer注册MBean的过程,并总结了JMX漏洞的利用流程和潜在风险。
摘要由CSDN通过智能技术生成

前言:

前一段时间apace solr JMX因为配置不当出现远程代码执行漏洞,最近自己在看一套java系统时,发现该系统也存在JMX远程代码漏洞,于是乎就想研究下JMX这种通用型漏洞,下面我就从原理到利用对该漏洞做一个简单的梳理。

一、JMX服务和MBean

JMX(Java Management Extensions,即Java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架。JMX是一套复杂的机制,由于我们要讲的JMX远程代码漏洞和MBean相关,所以这里我们之介绍jmx和mbean相关的一些基础知识。

JMX是管理扩展,通过JMX我们可以监控管理我们的指定的java程序。但不是所有的java类都能被管理。只有按照特定格式编写的java类才能被jmx原理。这种特定格式机制我们称为Mbean。

我们先看一个简单的MBean,mbean首先需要定义一个接口,定义格式xxxMBean,

之后再定义一个实现该接口的类。

035e6a77ace7f1f109405729be8c7bd1.png

4192cb9093c8669e2c503302bb0cf86e.png

二、MBeanServer

对于已经实现的MBean,我们怎么进行监控和管理,这里就需要MBeanServer了。我们可以将MBeanServer理解为一个mbean的仓库,需要监控的mbean都需要先注册到仓库中。向MBeanServer注册mbean有两种方式,一是本地注册,二是远程注册(远程注册就为我们执行任意代码提供了可能,后面会细讲)。

我们先看一段简单的代码,本地向mbeanserver注册mbean。

public static void main(String[] args) throwsException{
     MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();//向MBeanServer 注册 mbeanObjectName helloName = new ObjectName("HelloMbean:name=Hello");mBeanServer.registerMBean(new Hello(), helloName);Registry registry = LocateRegistry.createRegistry(1099);//构造 JMXServiceURLJMXServiceURL jmxServiceURL = new JMXServiceURL("service:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值