9100/tcp - PJL (Printer Job Language)

Tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporte o HackTricks

Informações básicas

De aqui: Raw printing é o que definimos como o processo de estabelecer uma conexão com a porta 9100/tcp de uma impressora de rede. É o método padrão usado por CUPS e pela arquitetura de impressão do Windows para comunicar-se com impressoras de rede, pois é considerado como ‘o protocolo de rede mais simples, rápido e, geralmente, mais confiável usado para impressoras’. A impressão raw pela porta 9100, também referida como JetDirect, AppSocket ou PDL-datastream, na verdade não é um protocolo de impressão por si só. Em vez disso, todos os dados enviados são processados diretamente pelo dispositivo de impressão, assim como uma conexão paralela sobre TCP. Em contraste com LPD, IPP e SMB, isto pode enviar feedback direto para o cliente, incluindo mensagens de status e erro. Esse canal bidirecional nos dá acesso direto aos resultados de comandos PJL, PostScript ou PCL. Portanto, a impressão raw pela porta 9100 — que é suportada por quase qualquer impressora de rede — é usada como canal para análise de segurança com PRET e PFT.

Se quiser saber mais sobre hacking printers read this page.

Porta padrão: 9100

9100/tcp open  jetdirect

Enumeração

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

Ferramenta de Hacking para Impressoras

Esta é a ferramenta que você quer usar para abusar de impressoras: PRET

Exploração do XPS/TrueType VM (Canon ImageCLASS)

  • Enviar XPS via PJL:

  • @PJL ENTER LANGUAGE = XPS

  • Então envie os bytes do ZIP XPS na mesma conexão TCP.

  • Página XPS mínima referenciando uma fonte do atacante:

<Glyphs Fill="#ff000000" FontUri="/Resources/evil.ttf" FontRenderingEmSize="12" OriginX="10" OriginY="10"/>
  • Resumo do primitivo RCE (TrueType hinting VM):

  • O bytecode de hinting em TTF é executado por uma TrueType VM. A VM da Canon não possuía stack bounds checks.

  • CINDEX: OOB stack read → info leak

  • DELTAP1: pivot relativo de stack sem verificação → escritas controladas com pushes subsequentes

  • Combine WS/RS (VM storage write/read) para preparar valores e realizar uma escrita precisa de 32 bits após o pivot.

  • Esboço do exploit:

  1. Crie um XPS com a página acima e inclua /Resources/evil.ttf.
  2. Em fpgm/prep, use CINDEX para leak e calcular stack_cur.
  3. Prepare o valor alvo com WS; faça pivot com DELTAP1 para o destino; use RS para escrevê‑lo (por exemplo, para um ponteiro de função) para obter controle do PC.
  • Enviar via 9100/tcp:
{ printf "@PJL ENTER LANGUAGE = XPS\r\n"; cat exploit.xps; } | nc -q0 <PRINTER_IP> 9100
  • exploit.xps é um XPS ZIP válido contendo Documents/1/Pages/1.fpage e /Resources/evil.ttf.

Shodan

  • pjl port:9100

Referências

Tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporte o HackTricks