Internet Printing Protocol

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

**์ธํ„ฐ๋„ท ์ธ์‡„ ํ”„๋กœํ† ์ฝœ (IPP)**๋Š” RFC 2910 ๋ฐ RFC 2911์— ๋ช…์‹œ๋œ ๋ฐ”์™€ ๊ฐ™์ด ๋„คํŠธ์›Œํฌ ์ธ์‡„์˜ ์‚ฌ์‹ค์ƒ ํ‘œ์ค€์ž…๋‹ˆ๋‹ค. ์ด๋Š” HTTP/1.1 ์œ„์—์„œ ์ž‘๋™ํ•˜๋ฉฐ(๋ช…ํ™•ํ•œ ํ…์ŠคํŠธ ๋˜๋Š” TLS) ์ธ์‡„ ์ž‘์—… ์ƒ์„ฑ, ํ”„๋ฆฐํ„ฐ ๊ธฐ๋Šฅ ์ฟผ๋ฆฌ ๋ฐ ๋Œ€๊ธฐ์—ด ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ํ’๋ถ€ํ•œ API๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. IPP Everywhere์™€ ๊ฐ™์€ ํ˜„๋Œ€์ ์ธ ํ™•์žฅ์€ ๋ชจ๋ฐ”์ผ ๋ฐ ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์—์„œ ๋“œ๋ผ์ด๋ฒ„ ์—†์ด ์ธ์‡„๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋ฉฐ, ๋™์ผํ•œ ํŒจํ‚ท ํ˜•์‹์ด 3D ํ”„๋ฆฐํ„ฐ์—๋„ ์žฌ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ถˆํ–‰ํžˆ๋„ ํฌํŠธ 631/tcp (๋ฐ ํ”„๋ฆฐํ„ฐ ๊ฒ€์ƒ‰์„ ์œ„ํ•œ 631/udp๋ฅผ ๋…ธ์ถœํ•˜๋Š” ๊ฒƒ์€ ์ „ํ†ต์ ์ธ ์‚ฌ๋ฌด์‹ค ํ”„๋ฆฐํ„ฐ์™€ CUPS๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ชจ๋“  Linux/Unix ํ˜ธ์ŠคํŠธ์—์„œ ์‹ฌ๊ฐํ•œ ๋ณด์•ˆ ๋ฌธ์ œ๋กœ ์ด์–ด์ง€๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.


Quick PoC โ€“ crafting raw IPP with Python

import struct, requests

# Minimal IPP Get-Printer-Attributes request (operation-id 0x000B)
ipp = struct.pack(
">IHHIHH",               # version 2.0, operation-id, request-id
0x0200,                  # 2.0
0x000B,                  # Get-Printer-Attributes
0x00000001,             # request-id
0x01, 0x47,             # operation-attributes-tag, charset attr (skipped)
) + b"\x03"                # end-of-attributes

r = requests.post("http://printer:631/ipp/print", headers={"Content-Type":"application/ipp"}, data=ipp)
print(r.status_code, r.content[:40])

์—ด๊ฑฐ ๋ฐ ์žฌ์กฐ์‚ฌ

1. Nmap NSE

# run all CUPS/IPP scripts
nmap -sV -p631 --script=cups* <target>
# or only basic info
nmap -p631 --script=cups-info,cups-queue-info <target>

cups-info ์Šคํฌ๋ฆฝํŠธ๋Š” ๋ชจ๋ธ, ์ƒํƒœ ๋ฐ ํ ํ†ต๊ณ„๋ฅผ ์ถ”์ถœํ•˜๊ณ  cups-queue-info๋Š” ๋Œ€๊ธฐ ์ค‘์ธ ์ž‘์—…์„ ๋‚˜์—ดํ•ฉ๋‹ˆ๋‹ค.

2. CUPS์˜ IPP ์œ ํ‹ธ๋ฆฌํ‹ฐ

  • ippfind โ€“ ๋ฉ€ํ‹ฐ์บ์ŠคํŠธ/UDP ๊ฒ€์ƒ‰ (cups-browsed์— ๋Œ€ํ•ด ์ž‘๋™):
ippfind --timeout 3 --txt -v "@local and port=631"  # ํ”„๋ฆฐํ„ฐ ๋ชฉ๋ก
  • ipptool โ€“ .test ํŒŒ์ผ์— ์ •์˜๋œ ์ž„์˜ ์š”์ฒญ:
ipptool -tv ipp://<IP>/ipp/print get-printer-attributes.test

๋ฒˆ๋“ค๋œ get-printer-attributes.test ํŒŒ์ผ์€ ํŽŒ์›จ์–ด ๋ฒ„์ „, ์ง€์›๋˜๋Š” ๋ฌธ์„œ ํ˜•์‹ ๋“ฑ์„ ์ฟผ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

3. Shodan / Censys dorks

shodan search 'product:"CUPS (IPP)" port:631'

70,000๊ฐœ ์ด์ƒ์˜ ํ˜ธ์ŠคํŠธ๊ฐ€ 2025๋…„ 4์›”์— CUPS๋ฅผ ๊ณต๊ฐœ์ ์œผ๋กœ ๋…ธ์ถœํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.


์ตœ๊ทผ ์ทจ์•ฝ์  (2023-2025)

์—ฐ๋„CVE ID(s)์˜ํ–ฅ์„ ๋ฐ›๋Š” ๊ตฌ์„ฑ ์š”์†Œ์˜ํ–ฅ
2025CVE-2023-50739Lexmark ํŽŒ์›จ์–ด (IPP ํŒŒ์„œ)ํž™ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ โ†’ Wi-Fi/LAN์„ ํ†ตํ•œ RCE
2024CVE-2024-47076, 47175, 47176, 47177cups-browsed, libcupsfilters, libppd, cups-filtersCUPS ๋ธŒ๋ผ์šฐ์ง•์ด ํ™œ์„ฑํ™”๋œ ๋ชจ๋“  Linux ๋ฐ์Šคํฌํƒ‘/์„œ๋ฒ„์—์„œ์˜ ์™„์ „ํ•œ ๋น„์ธ์ฆ RCE ์ฒด์ธ
2024CVE-2024-35235cupsd 2.4.8-์‹ฌ๋ณผ๋ฆญ ๋งํฌ ํŠธ๋ฆญ โ†’ ์ž„์˜์˜ chmod 666 โ†’ ๊ถŒํ•œ ์ƒ์Šน
2023CVE-2023-0856 (Canon) + Pwn2Ownsides ์†์„ฑ์˜ ์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ โ†’ ์›๊ฒฉ ์ฝ”๋“œ ์‹คํ–‰

cups-browsed RCE ์ฒด์ธ (2024๋…„ 9์›”)

  1. cups-browsed๋Š” ํ”„๋ฆฐํ„ฐ ๊ด‘๊ณ ๋ฅผ ์œ„ํ•ด UDP/631์—์„œ ์ˆ˜์‹  ๋Œ€๊ธฐํ•ฉ๋‹ˆ๋‹ค.
  2. ๊ณต๊ฒฉ์ž๊ฐ€ ์•…์˜์ ์ธ IPP URL์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋‹จ์ผ ์Šคํ‘ธํ•‘ ํŒจํ‚ท์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค (CVE-2024-47176).
  3. libcupsfilters๋Š” ๊ฒ€์ฆ ์—†์ด ์›๊ฒฉ PPD๋ฅผ ์ž๋™์œผ๋กœ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค (CVE-2024-47076 & 47175).
  4. ์กฐ์ž‘๋œ PPD๋Š” foomatic-rip ํ•„ํ„ฐ๋ฅผ ์•…์šฉํ•˜์—ฌ ์ธ์‡„๋  ๋•Œ๋งˆ๋‹ค ์ž„์˜์˜ ์…ธ ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค (CVE-2024-47177).

๊ฐœ๋… ์ฆ๋ช… ์ฝ”๋“œ๋Š” ์—ฐ๊ตฌ์ž์˜ ๋ธ”๋กœ๊ทธ์— ๊ณต๊ฐœ๋˜์–ด ์žˆ์œผ๋ฉฐ, ์ต์Šคํ”Œ๋กœ์ž‡์€ ์ธ์ฆ์ด ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค; UDP/631์— ๋Œ€ํ•œ ๋„คํŠธ์›Œํฌ ์ ‘๊ทผ๋งŒ์œผ๋กœ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

์ž„์‹œ ์™„ํ™” ์กฐ์น˜

sudo systemctl stop cups-browsed
sudo systemctl disable cups-browsed
sudo ufw deny 631/udp  # or equivalent firewall rule

ํŒจ์น˜๊ฐ€ 2024๋…„ 10์›”์— ์ฃผ์š” ๋ฐฐํฌํŒ์— ์˜ํ•ด ๋ฆด๋ฆฌ์Šค๋˜์—ˆ์Šต๋‹ˆ๋‹ค โ€“ cups-filters โ‰ฅ 2.0.0์„ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

cupsd.conf์˜ Listen ์ง€์‹œ๋ฌธ์— ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ๋ฐฐ์น˜ํ•˜๋ฉด **cupds (root)**๊ฐ€ ๊ณต๊ฒฉ์ž๊ฐ€ ์„ ํƒํ•œ ๊ฒฝ๋กœ์— ๋Œ€ํ•ด chmod 666์„ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋˜์–ด ์‹œ์Šคํ…œ ํŒŒ์ผ์ด ์“ฐ๊ธฐ ๊ฐ€๋Šฅํ•ด์ง€๊ณ , Ubuntu์—์„œ๋Š” FoomaticRIPCommandLine์„ ํ†ตํ•ด ์•…์„ฑ PPD๋กœ ์ฝ”๋“œ ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.


๊ณต๊ฒฉ ๊ธฐ์ˆ 

  • ์ธ์ฆ๋˜์ง€ ์•Š์€ ์›์‹œ ์ธ์‡„ ์ž‘์—… โ€“ ๋งŽ์€ ํ”„๋ฆฐํ„ฐ๊ฐ€ ์ธ์ฆ ์—†์ด POST /ipp/print๋ฅผ ์ˆ˜์šฉํ•ฉ๋‹ˆ๋‹ค. ์•…์„ฑ PostScript ํŽ˜์ด๋กœ๋“œ๋Š” ๊ณ ๊ธ‰ ์žฅ์น˜์—์„œ ์…ธ ๋ช…๋ น(system("/bin/nc ..."))์„ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ž‘์—… ํƒˆ์ทจ โ€“ Cancel-Job ๋‹ค์Œ์— Send-Document๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ณต๊ฒฉ์ž๊ฐ€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ๋ฌธ์„œ๋ฅผ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์ธ์‡„๋˜๊ธฐ ์ „์— ๊ต์ฒดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • SNMP โ†’ IPP ์กฐํ•ฉ โ€“ ๊ธฐ๋ณธ ์ปค๋ฎค๋‹ˆํ‹ฐ public์€ IPP URL์— ํ•„์š”ํ•œ ๋‚ด๋ถ€ ํ ์ด๋ฆ„์„ ์ข…์ข… ์œ ์ถœํ•ฉ๋‹ˆ๋‹ค.

๋ฐฉ์–ด ๋ชจ๋ฒ” ์‚ฌ๋ก€

  1. CUPS ๋ฐ ํ”„๋ฆฐํ„ฐ ํŽŒ์›จ์–ด๋ฅผ ์‹ ์†ํ•˜๊ฒŒ ํŒจ์น˜ํ•˜๊ณ , ๊ณต๊ธ‰์—…์ฒด PSIRT ํ”ผ๋“œ๋ฅผ ๊ตฌ๋…ํ•˜์‹ญ์‹œ์˜ค.
  2. zeroconf ์ธ์‡„๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š๋Š” ํ•œ cups-browsed ๋ฐ UDP/631์„ ๋น„ํ™œ์„ฑํ™”ํ•˜์‹ญ์‹œ์˜ค.
  3. TCP/631์„ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋ธŒ๋„ท/VPN์œผ๋กœ ์ œํ•œํ•˜๊ณ  **TLS (ipps://)**๋ฅผ ์ ์šฉํ•˜์‹ญ์‹œ์˜ค.
  4. ์ต๋ช… ์ธ์‡„ ๋Œ€์‹  Kerberos/Negotiate ๋˜๋Š” ์ธ์ฆ์„œ ์ธ์ฆ์„ ์š”๊ตฌํ•˜์‹ญ์‹œ์˜ค.
  5. ๋กœ๊ทธ ๋ชจ๋‹ˆํ„ฐ๋ง: /var/log/cups/error_log์—์„œ LogLevel debug2๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ถˆ์™„์ „ํ•œ PPD ๋‹ค์šด๋กœ๋“œ ๋˜๋Š” ์˜์‹ฌ์Šค๋Ÿฌ์šด ํ•„ํ„ฐ ํ˜ธ์ถœ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
  6. ๊ณ ๋ณด์•ˆ ๋„คํŠธ์›Œํฌ์—์„œ๋Š” ์ธ์‡„๋ฅผ ๊ฐ•ํ™”๋œ ๊ฒฉ๋ฆฌ๋œ ์ธ์‡„ ์„œ๋ฒ„๋กœ ์ด๋™ํ•˜์—ฌ USB๋ฅผ ํ†ตํ•ด ์žฅ์น˜์— ์ž‘์—…์„ ํ”„๋ก์‹œํ•˜์‹ญ์‹œ์˜ค.

References

  • Akamai โ€“ โ€œCritical Linux RCE Vulnerability in CUPS โ€” What We Know and How to Prepareโ€, April 2025.
  • Debian Security Tracker โ€“ CVE-2024-35235 details.

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