阿里巴巴开源的FastJson 1反序列化漏洞复现攻击保姆级教程

news/2024/12/31 1:01:27/

免责申明

        本文仅是用于学习检测自己搭建的靶场环境有关FastJson1反序列化漏洞的原理和攻击实验,请勿用在非法途径上,若将其用于非法目的,所造成的一切后果由您自行承担,产生的一切风险和后果与笔者无关;本文开始前请认真详细学习《‌中华人民共和国网络安全法》‌及其所在国家地区相关法规内容【学法时习之丨网络安全在身边一图了解网络安全法_中央网络安全和信息化委员会办公室】 如您继续阅读该文章即表明您默认遵守该内容。

一、FastJson1介绍

1.1、FastJson简介

        FastJson 是阿里巴巴公司使用 Java语言编写开源的高性能 JSON 库,主要是用于数据在 Json 和 Java Object之间相互转换。它没有用Java的序列化机制,而是他们自定义了一套序列化机制(JSON.toJSONString 和 JSON.parseObject/JSON.parse这个两个接口,分别实现序列化和反序列化)。

https://github.com/alibaba/fastjsonicon-default.png?t=O83Ahttps://github.com/alibaba/fastjson

1.2、Fastjson反序列化漏洞原理

        FastJson为了知道提交过来的数据是什么类型,特别增加了自动类型(autotype
)逻辑
即:每次都需要读取【@type】属性造成该漏洞;Fastjson反序列化的Gadget需要无参默认构造方法或者注解指定构造方法并添加相应参数。使用Feature.SupportNonPublicField才能打开非公有属性的反序列化处理,@type可以指定反序列化任意类调用其set,get,is方法,并且由于反序列化的特性,我们可以通过目标类的set方法自由的设置类的属性值,由此攻击者可构造出一些恶意利用链)。

        攻击者准备rmi服务和web服务,将rmi绝对路径注入到lookup方法中,受害者JNDI接口会指向攻击者控制的rmi服务器,JNDI接口向攻击者控制的web服务器远程加载恶意代码,执行构造函数形成RCE。
        JNDI(The Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名目录服务的API,命名服务将名称和对象联系起来,使得我们可以用名称访问对象。

序号Java接口说明
JNDI

JNDI 包含在 Java SE 平台中。要使用 JNDI,您必须具有 JNDI 类和一个或多个服务提供者。JDK 包括【LDAP、DNS、NIS、NDS、RMI、CORBA】命名/目录服务的服务提供商

搞懂JNDIicon-default.png?t=O83Ahttps://fynch3r.github.io/%E6%90%9E%E6%87%82JNDI/

1LDAP轻量级目录访问协议
2

http://www.ppmy.cn/news/1535024.html

相关文章

Hive数仓操作(十五)

Hive 开窗函数 Hive窗口函数是一种特殊的函数,允许用户在查询中对一组行进行计算,而不仅仅是单独的行。窗口函数可以在 SQL 查询中进行聚合、排名、累积计算等。这使得窗口函数在数据分析和报告生成中非常有用。 窗口函数的基本组成部分 函数类型&…

PHP中的PEAR是什么

PHP中的PEAR是PHP Extension and Application Repository的缩写,即PHP扩展与应用库。它是一个PHP扩展及应用的代码仓库,提供了许多常用的PHP库和工具,涵盖了页面呈现、数据库访问、文件操作、数据结构、缓存操作、网络协议、WebService等许多…

【计算机视觉】ch1-Introduction

相机模型与成像 1. 世界坐标系 (World Coordinate System) 世界坐标系是指物体在真实世界中的位置和方向的表示方式。在计算机视觉和图像处理领域,世界坐标系通常是一个全局坐标系统,描述了摄像机拍摄到的物体在实际三维空间中的位置。它是所有其他坐标…

初学Vue

文章目录 简介特点 初识Vue模板语法两大类插值语法指令语法 两种数据绑定方式单项绑定(v-bind)双向绑定(v-model) 数据代理事件处理基本使用事件修饰符 键盘事件计算属性 computed 简介 一套用于构建用户界面的渐进式JavaScript框…

CTFshow 命令执行 web29~web36(正则匹配绕过)

目录 web29 方法一:include伪协议包含文件读取 方法二:写入文件 方法三:通识符 web30 方法一:filter伪协议文件包含读取 方法二:命令执行函数绕过 方法三:写入文件 web31 方法一:filter伪…

Flink从ck拉起任务脚本

#!/bin/bashAPP_NAME"orderTest"CHECKPOINT_BASE_PATH"hdfs:///jobs/flink/checkpoints/aaa-test/"is_running$(yarn application -list | grep -w "$APP_NAME" | grep -c "RUNNING")if [ $is_running -gt 0 ]; thenecho "应用程…

Linux shell编程学习笔记84:tee命令——显示保存两不误

0 引言 在前面的学习笔记中,我们经常使用echo命令和输出重定向来生成脚本文件或演示文件,其实Linux提供了一个可以从标准输入读取数据,并输出成文件的命令——tee。 1 tee命令 的帮助信息、功能、命令格式、选项和参数说明 1.1 tee命令 的…

深入解析 https

我的主页:2的n次方_ 1. 背景介绍 在使用 http 协议的时候是不安全的,可能会出现运营商劫持等安全问题,运营商通过劫持 http 流量,篡改返回的网页内容,例如广告业务,可能会通过 Referer 字段 来统计是…