
script proof-of-concept per 2 RCE non autenticate in Samba (CVE-2026-4408 & CVE-2026-4480) ed escalation locale dei privilegi in TelnetD (CVE-2026-28372)
Questo repository contiene script proof-of-concept per le vulnerabilità presentate al talk "Dimenticati ma non scomparsi: RCE non autenticati e LPE in servizi Linux legacy" del Black Hat USA 2026 e del DEF CON 34.
Escalation locale dei privilegi in TelnetD: gli attaccanti non privilegiati possono sfruttare la funzionalità delle variabili d'ambiente di TelnetD per ottenere una shell con privilegi di root. Per progettazione e secondo la sua RFC, il protocollo Telnet consente ai suoi client di impostare variabili d'ambiente per la sessione di shell. Questa funzionalità è stata progettata male dal punto di vista della sicurezza. Il servizio permetteva a client non autenticati di impostare variabili d'ambiente per il processo telnetd stesso e per tutti i suoi sottoprocessi. Uno dei suoi sottoprocessi è /usr/bin/login. Impostando le variabili d'ambiente come client telnet remoto, abbiamo potuto avviare /usr/bin/login con la variabile d'ambiente “CREDENTIALS_DIRECTORY”. Questo fa sì che il processo di login cerchi un file chiamato “login.noauth” nella directory specificata da “CREDENTIALS_DIRECTORY”. Se il file contiene la stringa “yes”, il processo di login salta l'autenticazione e fornisce al client una shell in esecuzione come l'utente specificato dal client. Può essere qualsiasi utente, anche root.
Esecuzione di codice in remoto non autenticata in Samba tramite SAMR: Samba si affida ai comandi shell impostati nel suo file di configurazione (smb.conf) per svolgere varie operazioni richieste dai client, come aggiungere una nuova condivisione di rete, aggiungere una nuova stampante e altro. Alcuni di questi comandi shell ricevono parametri basati sulla richiesta inviata dal client. Nella maggior parte dei casi, i parametri vengono sanificati e i caratteri speciali vengono escapati prima di eseguire il comando per prevenire l'iniezione di shell.
La vulnerabilità risiede nella funzione “check_password_complexity" che formatta una stringa specificata dal client in un comando shell senza sanificarla. La vulnerabilità richiede due condizioni:
Per configurare il demone RPC di samba (samba-dcerpcd) per l'uso di NCACN_IP_TCP, deve essere avviato come servizio di sistema separato e non come parte del servizio samba principale. Inoltre, l'opzione "rpc start on demand helpers” nel file di configurazione deve essere impostata su “no”.
Esecuzione di codice in remoto non autenticata in Samba tramite SPOOLSS: anche la funzione generic_job_submit formatta una stringa controllata dal client in un comando shell senza sanificarla. La combinazione delle seguenti configurazioni porta a questa vulnerabilità:
Un client non autenticato può richiedere l'accesso a una condivisione stampante tramite l'interfaccia RPC spoolss. Quindi, un job di stampa può essere inviato tramite la funzione RpcStartDocPrinter. Il nome del documento specificato nella richiesta verrà usato come nome del job formattato nel parametro “%J” del comando. La chiamata a hRpcEndDocPrinter attiva generic_job_submit, che eseguirà il “print command” dalla configurazione dopo aver formattato il nome del job senza sanificazione. Il codice inviato dall'exploit verrà eseguito come utente "nobody". Se la configurazione "valid users = @users" viene aggiunta alla sezione della condivisione stampante, lo sfruttamento funziona ancora, ma richiede credenziali valide. Se l'autenticazione è stata effettuata, il codice inviato dall'exploit verrà eseguito come utente autenticato e non come "nobody".