Internet Printing Protocol

Reading time: 5 minutes

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 2910RFC 2911에 명시된 바와 같이 네트워크 인쇄의 사실상 표준입니다. 이는 HTTP/1.1 위에서 작동하며(명확한 텍스트 또는 TLS) 인쇄 작업 생성, 프린터 기능 쿼리 및 대기열 관리를 위한 풍부한 API를 제공합니다. IPP Everywhere와 같은 현대적인 확장은 모바일 및 클라우드 환경에서 드라이버 없이 인쇄를 가능하게 하며, 동일한 패킷 형식이 3D 프린터에도 재사용되었습니다.

불행히도 포트 631/tcp (및 프린터 검색을 위한 631/udp를 노출하는 것은 전통적인 사무실 프린터와 CUPS를 실행하는 모든 Linux/Unix 호스트에서 심각한 보안 문제로 이어지는 경우가 많습니다.


Quick PoC – crafting raw IPP with Python

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

bash
# 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에 대해 작동):
bash
ippfind --timeout 3 --txt -v "@local and port=631"  # 프린터 목록
  • ipptool.test 파일에 정의된 임의 요청:
bash
ipptool -tv ipp://<IP>/ipp/print get-printer-attributes.test

번들된 get-printer-attributes.test 파일은 펌웨어 버전, 지원되는 문서 형식 등을 쿼리합니다.

3. Shodan / Censys dorks

bash
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.confListen 지시문에 심볼릭 링크를 배치하면 **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 지원하기