9100/tcp - PJL (Printer Job Language)
Tip
Ucz się i ćwicz Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.
Podstawowe informacje
Z here: Raw printing to proces, który definiujemy jako nawiązanie połączenia z portem 9100/tcp drukarki sieciowej. Jest to domyślna metoda używana przez CUPS i architekturę drukowania Windows do komunikacji z drukarkami sieciowymi, ponieważ jest uważana za ‘najprostszy, najszybszy i zazwyczaj najpewniejszy protokół sieciowy używany dla drukarek’. Drukowanie przez surowy port 9100, nazywane też JetDirect, AppSocket lub PDL-datastream, w rzeczywistości nie jest samodzielnym protokołem drukowania. Zamiast tego wszystkie wysyłane dane są bezpośrednio przetwarzane przez urządzenie drukujące, podobnie jak połączenie równoległe przez TCP. W przeciwieństwie do LPD, IPP i SMB, może ono wysyłać bezpośrednie informacje zwrotne do klienta, w tym komunikaty o stanie i błędach. Taki dwukierunkowy kanał daje nam bezpośredni dostęp do wyników poleceń PJL, PostScript lub PCL. Dlatego drukowanie przez surowy port 9100 – które jest obsługiwane przez niemal każdą drukarkę sieciową – jest używane jako kanał do analizy bezpieczeństwa przy użyciu PRET i PFT.
Jeśli chcesz dowiedzieć się więcej o hacking printers read this page.
Domyślny port: 9100
9100/tcp open jetdirect
Enumeracja
Ręczna
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
Automatyczne
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
Printers Hacking tool
To narzędzie, którego chcesz użyć do wykorzystywania drukarek: PRET
XPS/TrueType VM exploitation (Canon ImageCLASS)
-
Wyślij XPS przez PJL:
-
@PJL ENTER LANGUAGE = XPS -
Następnie wyślij bajty ZIP XPS na tym samym połączeniu TCP.
-
Minimalna strona XPS odwołująca się do czcionki kontrolowanej przez atakującego:
<Glyphs Fill="#ff000000" FontUri="/Resources/evil.ttf" FontRenderingEmSize="12" OriginX="10" OriginY="10"/>
-
Podsumowanie prymitywu RCE (TrueType hinting VM):
-
Hinting bytecode in TTF is executed by a TrueType VM. Canon’s VM lacked stack bounds checks.
-
CINDEX: OOB stack read → info leak
-
DELTAP1: unchecked relative stack pivot → controlled writes with subsequent pushes
-
Połącz
WS/RS(VM storage write/read), aby przygotować wartości i wykonać precyzyjny 32-bit write po pivot. -
Zarys exploita:
- Utwórz XPS z powyższą stroną i dołącz
/Resources/evil.ttf. - W
fpgm/prepużyjCINDEX, aby wykonać leak i obliczyćstack_cur. - Przygotuj docelową wartość za pomocą
WS; wykonaj pivotDELTAP1do miejsca docelowego; użyjRS, aby ją zapisać (np. do function pointer) i przejąć kontrolę nad PC.
- Wyślij przez 9100/tcp:
{ printf "@PJL ENTER LANGUAGE = XPS\r\n"; cat exploit.xps; } | nc -q0 <PRINTER_IP> 9100
exploit.xpsjest prawidłowym XPS ZIP zawierającymDocuments/1/Pages/1.fpageoraz/Resources/evil.ttf.
Shodan
pjl port:9100
Źródła
- Hacking printers using fonts (Canon ImageCLASS TrueType VM bugs)
- Apple TrueType Reference Manual – Instruction Set and VM (26.6 fixed point)
Tip
Ucz się i ćwicz Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.


