当前位置: 首页 > article >正文

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

免责申明

        本文仅是用于学习检测自己搭建的靶场环境有关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/

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

http://www.kler.cn/news/334708.html

相关文章:

  • Word办公自动化的一些方法
  • 【分页】Spring Boot 列表分页 + javaScript前台展示
  • 物联网智能设备:未来生活的变革者
  • 【五分钟学会】YOLO11 自定义数据集从训练到部署
  • 【web安全】——XXE漏洞
  • 睡眠对于生活的重要性
  • vulnhub-digitalworld.local DEVELOPMENT靶机
  • 脉冲神经网络(SNN)论文阅读(六)-----ECCV-2024 脉冲驱动的SNN目标检测框架:SpikeYOLO
  • windows下载Redis
  • 爬虫获取不同数据类型(如JSON,HTML)的处理方法以及图片相对URL地址的转换
  • JVM Class类文件结构
  • 【性能测试】使用JMeter性能工具做测试的基本过程及案例分析
  • Macos终端常用的命令行指令总结
  • 线程安全的单例模式 | 可重入 | 线程安全 |死锁(理论)
  • python:PyPDF2 将多个图片转换为pdf,再合并成一个PDF文件
  • 璞华科技×珠海采筑:通过SRM系统实现采购管理一体化和精细化
  • 国外电商系统开发-运维系统拓扑布局
  • CNN中的平移不变性和平移等变性
  • 影刀RPA:Excel内容填充指令
  • SpringBoot技术栈在校园资料分享平台中的应用