9100/tcp - PJL (Printer Job Language)
Tip
Impara e pratica il hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.
Informazioni di base
From here: La stampa raw è ciò che definiamo come il processo di stabilire una connessione alla porta 9100/tcp di una stampante di rete. È il metodo predefinito usato da CUPS e dall’architettura di stampa di Windows per comunicare con le stampanti di rete in quanto è considerato ‘il protocollo di rete più semplice, veloce e in generale più affidabile usato per le stampanti’. La stampa raw sulla porta 9100, anche chiamata JetDirect, AppSocket o PDL-datastream, in realtà non è un protocollo di stampa di per sé. Invece tutti i dati inviati vengono elaborati direttamente dal dispositivo di stampa, proprio come una connessione parallela su TCP. In contrasto con LPD, IPP e SMB, questo può inviare feedback diretto al client, incluse informazioni di stato e messaggi di errore. Un tale canale bidirezionale ci dà accesso diretto ai risultati dei comandi PJL, PostScript o PCL. Pertanto la stampa raw sulla porta 9100 — che è supportata da quasi tutte le stampanti di rete — è usata come canale per l’analisi di sicurezza con PRET e PFT.
Se vuoi saperne di più su hacking printers read this page.
Porta predefinita: 9100
9100/tcp open jetdirect
Enumerazione
Manuale
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
Automatico
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
Strumento Hacking per stampanti
Questo è lo strumento che vuoi usare per abusare delle stampanti: PRET
XPS/TrueType VM exploitation (Canon ImageCLASS)
-
Inviare XPS tramite PJL:
-
@PJL ENTER LANGUAGE = XPS -
Poi invia i byte dello ZIP XPS sulla stessa connessione TCP.
-
Pagina XPS minimale che fa riferimento a un font dell’attaccante:
<Glyphs Fill="#ff000000" FontUri="/Resources/evil.ttf" FontRenderingEmSize="12" OriginX="10" OriginY="10"/>
-
Sommario della primitiva RCE (TrueType hinting VM):
-
Il bytecode di hinting in TTF è eseguito da una TrueType VM. La VM di Canon non effettuava controlli sui limiti dello stack.
-
CINDEX: lettura OOB dello stack → info leak
-
DELTAP1: pivot relativo dello stack non verificato → scritture controllate con pushes successivi
-
Combina
WS/RS(scrittura/lettura dello storage della VM) per predisporre i valori e effettuare una scrittura precisa a 32-bit dopo il pivot. -
Schema dell’exploit:
- Crea un XPS con la pagina sopra e includi
/Resources/evil.ttf. - In
fpgm/prep, usaCINDEXper ottenere un info leak e calcolarestack_cur. - Prepara il valore target con
WS; effettua il pivot conDELTAP1verso la destinazione; usaRSper scriverlo (ad es., su un puntatore a funzione) per ottenere il controllo del PC.
- Invia su 9100/tcp:
{ printf "@PJL ENTER LANGUAGE = XPS\r\n"; cat exploit.xps; } | nc -q0 <PRINTER_IP> 9100
exploit.xpsè un ZIP XPS valido che contieneDocuments/1/Pages/1.fpagee/Resources/evil.ttf.
Shodan
pjl port:9100
Riferimenti
- Hacking printers using fonts (Canon ImageCLASS TrueType VM bugs)
- Apple TrueType Reference Manual – Instruction Set and VM (26.6 fixed point)
Tip
Impara e pratica il hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.
HackTricks

