9100/tcp - PJL (Printer Job Language)
Tip
Aprende y practica Hacking en AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.
Información básica
Desde esta página: Raw printing es lo que definimos como el proceso de establecer una conexión al puerto 9100/tcp de una impresora de red. Es el método predeterminado usado por CUPS y la arquitectura de impresión de Windows para comunicarse con impresoras de red, ya que se considera ‘the simplest, fastest, and generally the most reliable network protocol used for printers’. La impresión raw por el puerto 9100, también denominada JetDirect, AppSocket o PDL-datastream, en realidad no es un protocolo de impresión por sí mismo. En su lugar, todos los datos enviados son procesados directamente por el dispositivo de impresión, tal como una conexión paralela sobre TCP. En contraste con LPD, IPP y SMB, esto puede enviar retroalimentación directa al cliente, incluyendo mensajes de estado y de error. Un canal bidireccional así nos da acceso directo a los resultados de comandos PJL, PostScript o PCL. Por tanto, la impresión raw por puerto 9100 —que es soportada por casi cualquier impresora de red— se usa como canal para el análisis de seguridad con PRET y PFT.
Si quieres aprender más sobre hacking printers read this page.
Puerto por defecto: 9100
9100/tcp open jetdirect
Enumeración
Manual
nc -vn <IP> 9100
@PJL INFO STATUS #CODE=40000 DISPLAY="Sleep" ONLINE=TRUE
@PJL INFO ID # ID (Brand an version): Brother HL-L2360D series:84U-F75:Ver.b.26
@PJL INFO PRODINFO #Product info
@PJL FSDIRLIST NAME="0:\" ENTRY=1 COUNT=65535 #List dir
@PJL INFO VARIABLES #Env variales
@PJL INFO FILESYS #?
@PJL INFO TIMEOUT #Timeout variables
@PJL RDYMSG #Ready message
@PJL FSINIT
@PJL FSDIRLIST
@PJL FSUPLOAD #Useful to upload a file
@PJL FSDOWNLOAD #Useful to download a file
@PJL FSDELETE #Useful to delete a file
Automático
nmap -sV --script pjl-ready-message -p <PORT> <IP>
msf> use auxiliary/scanner/printer/printer_env_vars
msf> use auxiliary/scanner/printer/printer_list_dir
msf> use auxiliary/scanner/printer/printer_list_volumes
msf> use auxiliary/scanner/printer/printer_ready_message
msf> use auxiliary/scanner/printer/printer_version_info
msf> use auxiliary/scanner/printer/printer_download_file
msf> use auxiliary/scanner/printer/printer_upload_file
msf> use auxiliary/scanner/printer/printer_delete_file
Herramienta para Hacking de impresoras
Esta es la herramienta que quieres usar para abusar de impresoras: PRET
XPS/TrueType VM exploitation (Canon ImageCLASS)
-
Enviar XPS sobre PJL:
-
@PJL ENTER LANGUAGE = XPS -
Luego envía los bytes del ZIP XPS en la misma conexión TCP.
-
Página XPS mínima que referencia una fuente maliciosa:
<Glyphs Fill="#ff000000" FontUri="/Resources/evil.ttf" FontRenderingEmSize="12" OriginX="10" OriginY="10"/>
-
Resumen de la primitiva RCE (TrueType hinting VM):
-
El bytecode de hinting en TTF es ejecutado por una VM TrueType. La VM de Canon carecía de comprobaciones de límites de pila.
-
CINDEX: lectura OOB de la pila → leak de información
-
DELTAP1: pivote relativo de pila sin comprobaciones → escrituras controladas con pushes posteriores
-
Combinar
WS/RS(VM storage write/read) para preparar valores y realizar una escritura precisa de 32 bits tras el pivot. -
Esquema del exploit:
- Crear XPS con la página anterior e incluir
/Resources/evil.ttf. - En
fpgm/prep, usarCINDEXpara leak y calcularstack_cur. - Preparar el valor objetivo con
WS; pivotar conDELTAP1hacia el destino; usarRSpara escribirlo (p. ej., en un puntero de función) para obtener control del PC.
- Enviar por 9100/tcp:
{ printf "@PJL ENTER LANGUAGE = XPS\r\n"; cat exploit.xps; } | nc -q0 <PRINTER_IP> 9100
exploit.xpses un XPS ZIP válido que contieneDocuments/1/Pages/1.fpagey/Resources/evil.ttf.
Shodan
pjl port:9100
Referencias
- Hacking printers using fonts (Canon ImageCLASS TrueType VM bugs)
- Apple TrueType Reference Manual – Instruction Set and VM (26.6 fixed point)
Tip
Aprende y practica Hacking en AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.
HackTricks

