
Honeypot PoC para detectar intentos de explotación contra CVE-2024-47177
Este proyecto implementa un honeypot para capturar intentos de explotación de vulnerabilidades en CUPS (Common UNIX Printing System). Específicamente, está diseñado para monitorear intentos de explotación relacionados con CVE-2024-47177. Esta vulnerabilidad permite la ejecución remota de comandos a través del parámetro FoomaticRIPCommandLine en archivos PPD. Si se pasa un valor malicioso a este parámetro, puede ejecutarse como un comando controlado por el usuario, lo que podría provocar graves violaciones de seguridad.
CUPS es un sistema de impresión de código abierto basado en estándares, ampliamente utilizado en varios sistemas operativos tipo UNIX. El paquete cups-filters proporciona backends, filtros y utilidades esenciales para CUPS 2.x en sistemas que no son macOS. La falla crítica explotada en CVE-2024-47177 es el manejo inadecuado de FoomaticRIPCommandLine, que puede aprovecharse junto con otros errores lógicos, como los descritos en CVE-2024-47176, para ejecutar comandos arbitrarios en el sistema anfitrión.
Este honeypot está diseñado para registrar intentos de explotación monitoreando las solicitudes de trabajos de impresión entrantes e inspeccionando sus atributos sospechosos, centrándose específicamente en el printer-privacy-policy-uri que puede contener comandos.
Este proyecto está inspirado en la divulgación inicial de EvilSocket, que destaca los riesgos de seguridad asociados con CUPS y proporciona una visión general completa de las técnicas de explotación involucradas.
Para ejecutar este honeypot, asegúrate de tener instaladas las siguientes dependencias:
cups y subprocess (incluidas en las instalaciones estándar de Python)Descarga y ejecuta el archivo install.sh:
curl -sSL https://raw.githubusercontent.com/referefref/cupspot-2024-47177/refs/heads/main/install.sh | bash
Para ejecutar el honeypot, ejecuta el siguiente comando:
python3 cupspot.py <LOCAL_HOST> [TARGET_HOST]
#<LOCAL_HOST>: The local address where the honeypot will listen for incoming print requests.
#[TARGET_HOST]: (Optional) The IP address of a target host to which browsing packets will be sent.
#If omitted, the honeypot will run in passive mode.
Ejecuta el honeypot y envía paquetes a un objetivo específico:
python3 cupspot.py 127.0.0.1 192.168.1.100
O ejecútalo en modo pasivo:
python3 cupspot.py 127.0.0.1