
Framework de exploits para el protocolo RAW de impresoras Epson
Repositorio: https://github.com/J4ck3LSyN-Gen2/CVE-2026-39047
Script PoC: poc.py
Objetivo simulado: mock_printer.py
Autor: J4ck3LSyN
Este framework demuestra la vulnerabilidad CVE-2026-39047: un desbordamiento de búfer remoto en impresoras multifunción de Epson (especialmente la L14150 FL27PB) al procesar payloads malformados o de gran tamaño a través del protocolo de impresión RAW sobre TCP (normalmente el puerto 9100).
La explotación exitosa puede conducir a la ejecución de código arbitrario en el entorno embebido de la impresora, lo que permite:
El PoC se centra en el encuadre de transporte, la ofuscación de payloads, las técnicas de fuzzing y los comportamientos de post-explotación por etapas, adecuados para red teaming, investigación de vulnerabilidades y pruebas defensivas.
[!WARNING]
- Esta herramienta puede (y va a) provocar la ejecución remota de código (RCE) en impresoras vulnerables.
- El uso no autorizado, el escaneo o la explotación de sistemas que NO posees o para los que NO tienes PERMISO ESCRITO EXPLÍCITO para probar es ILEGAL y puede violar leyes de fraude y abuso informático (p. ej., la CFAA en EE. UU.), normativas de protección de datos y políticas organizativas.
El autor no asume NINGUNA RESPONSABILIDAD por cualquier daño, pérdida de datos, interrupción del servicio o consecuencias legales derivados del uso o mal uso de este código.- Utiliza solo en entornos de laboratorio aislados con dispositivos que controles.
- Siempre obtén autorización explícita antes de realizar cualquier prueba.
- El código incluye modos dry-run y pasivo para ayudar al análisis seguro.
Se recomienda encarecidamente la divulgación responsable y el uso ético.- Aplica los parches a tus dispositivos con prontitud cuando estén disponibles las actualizaciones del fabricante.
- Las impresoras suelen estar en redes internas con alta confianza y monitoreo limitado, lo que las convierte en superficies de ataque atractivas.
Referencias:
PRT2).mock_printer.py para pruebas locales seguras (se bloquea con payloads de gran tamaño).socket, asyncio, argparse, zlib, hashlib, etc.)Clona el repositorio:
git clone https://github.com/J4ck3LSyN-Gen2/CVE-2026-39047.git
cd CVE-2026-39047
Haz ejecutables los scripts:
chmod +x poc.py mock_printer.py
(Opcional) Prueba con la impresora simulada en una terminal:
./mock_printer.py
./poc.py -t <TARGET_IP> [OPTIONS]
Ejemplos:
Prueba básica inicial:
./poc.py -t 192.168.1.100
Ejecución de fuzzing:
./poc.py -t 192.168.1.100 --fuzz --techniques cyclic random
Secuestro por etapas (solo laboratorio):
./poc.py -t 192.168.1.100 --hijack --objective shell --dry-run
Campaña completa con objetivo simulado:
# Terminal 1
./mock_printer.py
# Terminal 2
./poc.py -t 127.0.0.1 --fuzz --hijack --objective stage1
bTransportFrame() envuelve los payloads con la cabecera PRT2 + longitud.lObf): compresión zlib → máscara XOR dinámica (derivada de la semilla) → Base64.gModernPayload() y gPostPayload() para varios patrones y comandos por etapas.Consulta los docstrings y comentarios en el código para más detalles.
PRT2.Este PoC se proporciona estrictamente con fines educativos, de investigación y de pruebas de seguridad autorizadas. El uso indebido puede causar graves consecuencias. El propietario del repositorio no es responsable de ningún daño causado.
| Opción | Descripción |
|---|
-t, --target | Dirección IP del objetivo (obligatorio) |
-p, --port | Puerto (por defecto: 9100) |
--passive | Modo de reconocimiento pasivo (solo envía payloads de sonda) |
--fuzz | Habilita el fuzzing con múltiples técnicas |
--hijack | Habilita la preparación post-explotación |
--objective | stage1 | shell | beacon | persistence |
--callback | Identificador/cadena de callback opcional |
--capability | minimal | busybox | linux (afecta el envoltorio de comandos) |
--dry-run | Genera payloads pero no los envía |
--techniques | Lista separada por espacios (p. ej., cyclic format sled random) |
--delay | Retardo entre payloads en segundos (por defecto: 1.6) |