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 ์ง€์›ํ•˜๊ธฐ

๊ธฐ๋ณธ ์ •๋ณด

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:

  1. ์œ„ ํŽ˜์ด์ง€๋กœ XPS๋ฅผ ์ƒ์„ฑํ•˜๊ณ  /Resources/evil.ttf๋ฅผ ํฌํ•จ์‹œํ‚จ๋‹ค.
  2. fpgm/prep์—์„œ CINDEX๋ฅผ ์‚ฌ์šฉํ•ด leak๋ฅผ ์œ ๋ฐœํ•˜๊ณ  stack_cur๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค.
  3. 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

์ฐธ๊ณ ์ž๋ฃŒ

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 ์ง€์›ํ•˜๊ธฐ