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

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:

  1. Crea un XPS con la pagina sopra e includi /Resources/evil.ttf.
  2. In fpgm/prep, usa CINDEX per ottenere un info leak e calcolare stack_cur.
  3. Prepara il valore target con WS; effettua il pivot con DELTAP1 verso la destinazione; usa RS per 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 contiene Documents/1/Pages/1.fpage e /Resources/evil.ttf.

Shodan

  • pjl port:9100

Riferimenti

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