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
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
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:
- Crie um XPS com a página acima e inclua
/Resources/evil.ttf. - Em
fpgm/prep, useCINDEXpara leak e calcularstack_cur. - Prepare o valor alvo com
WS; faça pivot comDELTAP1para o destino; useRSpara 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 contendoDocuments/1/Pages/1.fpagee/Resources/evil.ttf.
Shodan
pjl port:9100
Referências
- Hacking printers using fonts (Canon ImageCLASS TrueType VM bugs)
- Apple TrueType Reference Manual – Instruction Set and VM (26.6 fixed point)
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
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.


