9100/tcp - PJL (Printer Job Language)
Tip
Lernen & üben Sie AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
Grundlegende Informationen
From here: Raw printing bezeichnen wir als den Prozess, eine Verbindung zum Port 9100/tcp eines Netzwerkdruckers herzustellen. Es ist die Standardmethode, die von CUPS und der Windows-Druckarchitektur verwendet wird, um mit Netzwerkdruckern zu kommunizieren, da sie als ‘die einfachste, schnellste und im Allgemeinen zuverlässigste Netzwerkprotokoll für Drucker’ gilt. Raw port 9100 printing, auch bezeichnet als JetDirect, AppSocket oder PDL-datastream, ist tatsächlich kein Druckprotokoll an sich. Stattdessen werden alle gesendeten Daten direkt vom Druckgerät verarbeitet, genau wie bei einer parallelen Verbindung über TCP. Im Gegensatz zu LPD, IPP und SMB kann dies direktes Feedback an den Client senden, einschließlich Status- und Fehlermeldungen. Ein solcher bidirektionaler Kanal gibt uns direkten Zugriff auf Ergebnisse von PJL, PostScript oder PCL-Befehlen. Daher wird raw port 9100 printing – das von fast jedem Netzwerkdrucker unterstützt wird – als Kanal für Sicherheitsanalysen mit PRET und PFT verwendet.
If you want to learn more about hacking printers read this page.
Standardport: 9100
9100/tcp open jetdirect
Aufklärung
Manuell
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
Automatisch
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
Drucker Hacking-Tool
Dies ist das Tool, das du verwenden möchtest, um Drucker zu missbrauchen: PRET
XPS/TrueType VM exploitation (Canon ImageCLASS)
-
XPS über PJL liefern:
-
@PJL ENTER LANGUAGE = XPS -
Sende dann die XPS ZIP-Bytes über dieselbe TCP-Verbindung.
-
Minimale XPS-Seite, die auf eine Angreifer-Schriftart verweist:
<Glyphs Fill="#ff000000" FontUri="/Resources/evil.ttf" FontRenderingEmSize="12" OriginX="10" OriginY="10"/>
-
RCE-Primitiv Zusammenfassung (TrueType hinting VM):
-
Hinting-Bytecode in TTF wird von einer TrueType VM ausgeführt. Canons VM hatte keine stack bounds checks.
-
CINDEX: OOB stack read → info leak
-
DELTAP1: unchecked relative stack pivot → controlled writes with subsequent pushes
-
Kombiniere
WS/RS(VM storage write/read), um Werte zu stage’n und nach dem Pivot einen präzisen 32-bit write durchzuführen. -
Exploit-Übersicht:
- Erstelle ein XPS mit der obigen Seite und füge
/Resources/evil.ttfein. - In
fpgm/prepCINDEXverwenden, um einen leak zu erzeugen undstack_curzu berechnen. - Stage den Zielwert mit
WS; pivot mitDELTAP1zur Zieladresse; nutzeRS, um ihn zu write’n (z. B. in einen function pointer) und so PC control zu erlangen.
- Sende über 9100/tcp:
{ printf "@PJL ENTER LANGUAGE = XPS\r\n"; cat exploit.xps; } | nc -q0 <PRINTER_IP> 9100
exploit.xpsist ein gültiges XPS-ZIP, dasDocuments/1/Pages/1.fpageund/Resources/evil.ttfenthält.
Shodan
pjl port:9100
Referenzen
- Hacking printers using fonts (Canon ImageCLASS TrueType VM bugs)
- Apple TrueType Reference Manual – Instruction Set and VM (26.6 fixed point)
Tip
Lernen & üben Sie AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
HackTricks

