9100/tcp - PJL (Printer Job Language)

Tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks

Informations de base

D’après here : Raw printing est ce que nous définissons comme le processus consistant à établir une connexion au port 9100/tcp d’une imprimante réseau. C’est la méthode par défaut utilisée par CUPS et l’architecture d’impression Windows pour communiquer avec les imprimantes réseau car elle est considérée comme ‘le protocole réseau le plus simple, le plus rapide et généralement le plus fiable utilisé pour les imprimantes’. Raw port 9100 printing, également appelé JetDirect, AppSocket ou PDL-datastream n’est en réalité pas un protocole d’impression en lui-même. À la place, toutes les données envoyées sont directement traitées par le périphérique d’impression, comme une connexion parallèle sur TCP. Contrairement à LPD, IPP et SMB, ceci peut renvoyer des retours directs au client, y compris des messages d’état et d’erreur. Un tel canal bidirectionnel nous donne un accès direct aux résultats des commandes PJL, PostScript ou PCL. Par conséquent, le raw port 9100 printing — qui est supporté par presque toutes les imprimantes réseau — est utilisé comme canal pour l’analyse de sécurité avec PRET et PFT.

If you want to learn more about hacking printers read this page.

Port par défaut : 9100

9100/tcp open  jetdirect

Énumération

Manuelle

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

Automatique

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

Outil de Hacking pour imprimantes

C’est l’outil que vous voulez utiliser pour abuser des imprimantes: PRET

Exploitation de la VM XPS/TrueType (Canon ImageCLASS)

  • Envoyer XPS via PJL :

  • @PJL ENTER LANGUAGE = XPS

  • Puis envoyer les octets ZIP XPS sur la même connexion TCP.

  • Page XPS minimale référencant une police d’attaquant:

<Glyphs Fill="#ff000000" FontUri="/Resources/evil.ttf" FontRenderingEmSize="12" OriginX="10" OriginY="10"/>
  • Résumé de la primitive RCE (TrueType hinting VM) :

  • Le bytecode de hinting dans TTF est exécuté par une TrueType VM. La VM de Canon n’effectuait pas de vérifications des limites de pile.

  • CINDEX: OOB stack read → info leak

  • DELTAP1: unchecked relative stack pivot → controlled writes with subsequent pushes

  • Combinez WS/RS (VM storage write/read) pour préparer des valeurs et effectuer une écriture 32-bit précise après le pivot.

  • Exploit outline:

  1. Créer un XPS avec la page ci‑dessus et inclure /Resources/evil.ttf.
  2. Dans fpgm/prep, utilisez CINDEX pour leak et calculer stack_cur.
  3. Préparer la valeur cible avec WS ; pivoter avec DELTAP1 vers la destination ; utiliser RS pour l’écrire (par ex. vers un pointeur de fonction) afin d’obtenir le contrôle du PC.
  • Envoyer sur 9100/tcp:
{ printf "@PJL ENTER LANGUAGE = XPS\r\n"; cat exploit.xps; } | nc -q0 <PRINTER_IP> 9100
  • exploit.xps est un ZIP XPS valide contenant Documents/1/Pages/1.fpage et /Resources/evil.ttf.

Shodan

  • pjl port:9100

Références

Tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks