9100/tcp - PJL (Printer Job Language)
Tip
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Βασικές Πληροφορίες
From here: Η ακατέργαστη εκτύπωση είναι αυτό που ορίζουμε ως τη διαδικασία σύνδεσης στη θύρα 9100/tcp ενός δικτυακού εκτυπωτή. Είναι η προεπιλεγμένη μέθοδος που χρησιμοποιείται από το CUPS και την αρχιτεκτονική εκτύπωσης των Windows για επικοινωνία με δικτυακούς εκτυπωτές, καθώς θεωρείται ‘η πιο απλή, γρήγορη, και γενικά η πιο αξιόπιστη πρωτόκολλο δικτύου για εκτυπωτές’. Η ακατέργαστη εκτύπωση μέσω της θύρας 9100, γνωστή και ως JetDirect, AppSocket ή PDL-datastream, στην πραγματικότητα δεν είναι πρωτόκολλο εκτύπωσης από μόνο του. Αντίθετα, όλα τα δεδομένα που αποστέλλονται επεξεργάζονται άμεσα από τη συσκευή εκτύπωσης, όπως μια παράλληλη σύνδεση πάνω από TCP. Σε αντίθεση με τα LPD, IPP και SMB, αυτό μπορεί να στείλει άμεση ανατροφοδότηση στον πελάτη, συμπεριλαμβανομένων μηνυμάτων κατάστασης και σφάλματος. Ένα τέτοιο αμφίδρομο κανάλι μας δίνει άμεση πρόσβαση στα αποτελέσματα εντολών PJL, PostScript ή PCL. Επομένως, η ακατέργαστη εκτύπωση μέσω θύρας 9100 — που υποστηρίζεται από σχεδόν κάθε δικτυακό εκτυπωτή — χρησιμοποιείται ως κανάλι για ανάλυση ασφάλειας με τα PRET και PFT.
If you want to learn more about hacking printers read this page.
Προεπιλεγμένη θύρα: 9100
9100/tcp open jetdirect
Απαρίθμηση
Χειροκίνητη
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
Αυτόματο
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
Εκτυπωτές Hacking εργαλείο
Αυτό είναι το εργαλείο που θέλετε να χρησιμοποιήσετε για να κακοχρησιμοποιήσετε εκτυπωτές: PRET
XPS/TrueType VM exploitation (Canon ImageCLASS)
-
Στείλτε XPS μέσω PJL:
-
@PJL ENTER LANGUAGE = XPS -
Στη συνέχεια στείλτε τα bytes του XPS ZIP στην ίδια TCP σύνδεση.
-
Ελάχιστη XPS σελίδα που αναφέρεται σε γραμματοσειρά του επιτιθέμενου:
<Glyphs Fill="#ff000000" FontUri="/Resources/evil.ttf" FontRenderingEmSize="12" OriginX="10" OriginY="10"/>
-
Σύνοψη RCE primitive (TrueType hinting VM):
-
Το hinting bytecode στο TTF εκτελείται από μια TrueType VM. Η VM της Canon δεν είχε ελέγχους ορίων στοίβας.
-
CINDEX: OOB ανάγνωση στοίβας → info leak
-
DELTAP1: ανεξέλεγκτο σχετικό stack pivot → ελεγχόμενες εγγραφές με επακόλουθες pushes
-
Συνδύασε
WS/RS(VM storage write/read) για να τοποθετήσεις τιμές και να πραγματοποιήσεις μια ακριβή 32-bit write μετά το pivot. -
Exploit outline:
- Δημιούργησε XPS με τη σελίδα παραπάνω και συμπεριέλαβε
/Resources/evil.ttf. - Στα
fpgm/prep, χρησιμοποίησεCINDEXγια να προκαλέσεις leak και να υπολογίσεις τοstack_cur. - Τοποθέτησε την τιμή στόχο με
WS; κάνε pivot μεDELTAP1στον προορισμό; χρησιμοποίησεRSγια να την γράψεις (π.χ. σε function pointer) για να αποκτήσεις έλεγχο PC.
- Send over 9100/tcp:
{ printf "@PJL ENTER LANGUAGE = XPS\r\n"; cat exploit.xps; } | nc -q0 <PRINTER_IP> 9100
exploit.xpsείναι έγκυρο XPS ZIP που περιέχειDocuments/1/Pages/1.fpageκαι/Resources/evil.ttf.
Shodan
pjl port:9100
Αναφορές
- Hacking printers using fonts (Canon ImageCLASS TrueType VM bugs)
- Apple TrueType Reference Manual – Instruction Set and VM (26.6 fixed point)
Tip
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
HackTricks

