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 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
**인터넷 인쇄 프로토콜 (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) | 영향을 받는 구성 요소 | 영향 |
---|---|---|---|
2025 | CVE-2023-50739 | Lexmark 펌웨어 (IPP 파서) | 힙 오버플로우 → Wi-Fi/LAN을 통한 RCE |
2024 | CVE-2024-47076, 47175, 47176, 47177 | cups-browsed, libcupsfilters, libppd, cups-filters | CUPS 브라우징이 활성화된 모든 Linux 데스크탑/서버에서의 완전한 비인증 RCE 체인 |
2024 | CVE-2024-35235 | cupsd 2.4.8- | 심볼릭 링크 트릭 → 임의의 chmod 666 → 권한 상승 |
2023 | CVE-2023-0856 (Canon) + Pwn2Own | sides 속성의 스택 오버플로우 → 원격 코드 실행 |
cups-browsed RCE 체인 (2024년 9월)
cups-browsed
는 프린터 광고를 위해 UDP/631에서 수신 대기합니다.- 공격자가 악의적인 IPP URL을 가리키는 단일 스푸핑 패킷을 보냅니다 (CVE-2024-47176).
libcupsfilters
는 검증 없이 원격 PPD를 자동으로 가져옵니다 (CVE-2024-47076 & 47175).- 조작된 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 symlink Listen
잘못된 구성 (CVE-2024-35235)
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에 필요한 내부 큐 이름을 종종 유출합니다.
방어 모범 사례
- CUPS 및 프린터 펌웨어를 신속하게 패치하고, 공급업체 PSIRT 피드를 구독하십시오.
- zeroconf 인쇄가 필요하지 않는 한
cups-browsed
및 UDP/631을 비활성화하십시오. - TCP/631을 신뢰할 수 있는 서브넷/VPN으로 제한하고 **TLS (ipps://)**를 적용하십시오.
- 익명 인쇄 대신 Kerberos/Negotiate 또는 인증서 인증을 요구하십시오.
- 로그 모니터링:
/var/log/cups/error_log
에서LogLevel debug2
를 사용하면 불완전한 PPD 다운로드 또는 의심스러운 필터 호출을 보여줍니다. - 고보안 네트워크에서는 인쇄를 강화된 격리된 인쇄 서버로 이동하여 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 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.