Internet Printing Protocol
Reading time: 6 minutes
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
Das Internet Printing Protocol (IPP), wie in RFC 2910 und RFC 2911 spezifiziert, ist der De-facto-Standard für das Netzwerkdruck. Es basiert auf HTTP/1.1 (entweder im Klartext oder TLS) und bietet eine umfangreiche API zum Erstellen von Druckaufträgen, Abfragen von Druckerfähigkeiten und Verwalten von Warteschlangen. Moderne Erweiterungen wie IPP Everywhere ermöglichen sogar druckerloses Drucken aus mobilen und Cloud-Umgebungen, während dasselbe Paketformat auch für 3-D-Drucker wiederverwendet wurde.
Leider führt das Offenlegen des Ports 631/tcp (und 631/udp für die Druckerentdeckung) oft zu ernsthaften Sicherheitsproblemen – sowohl bei traditionellen Bürodruckern als auch bei jedem Linux/Unix-Host, der CUPS ausführt.
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])
Enumeration & Recon
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>
Das cups-info
-Skript extrahiert Modell-, Status- und Warteschlangenstatistiken, während cups-queue-info
ausstehende Aufträge auflistet.
2. IPP-Dienstprogramme von CUPS
ippfind
– Multicast/UDP-Entdeckung (funktioniert gegen cups-browsed):
ippfind --timeout 3 --txt -v "@local and port=631" # list printers
ipptool
– beliebige Anfragen, die in einer .test-Datei definiert sind:
ipptool -tv ipp://<IP>/ipp/print get-printer-attributes.test
Die gebündelte get-printer-attributes.test-Datei fragt die Firmware-Version, unterstützte Dokumentformate usw. ab.
3. Shodan / Censys Dorks
shodan search 'product:"CUPS (IPP)" port:631'
Mehr als 70 000 Hosts haben im April 2025 CUPS öffentlich exponiert.
Aktuelle Schwachstellen (2023-2025)
Jahr | CVE-ID(s) | Betroffenes Element | Auswirkung |
---|---|---|---|
2025 | CVE-2023-50739 | Lexmark-Firmware (IPP-Parser) | Heap-Overflow → RCE über Wi-Fi/LAN |
2024 | CVE-2024-47076, 47175, 47176, 47177 | cups-browsed, libcupsfilters, libppd, cups-filters | Vollständige nicht authentifizierte RCE-Kette auf jedem Linux-Desktop/Server mit aktivierter CUPS-Browsing-Funktion |
2024 | CVE-2024-35235 | cupsd 2.4.8- | Symlink-Trick → beliebiges chmod 666 → Privilegieneskalation |
2023 | CVE-2023-0856 (Canon) + Pwn2Own | Stack-Overflow im sides -Attribut → Remote-Code-Ausführung |
cups-browsed RCE-Kette (September 2024)
cups-browsed
hört auf UDP/631 nach Druckeranzeigen.- Ein Angreifer sendet ein einzelnes gefälschtes Paket, das auf eine bösartige IPP-URL verweist (CVE-2024-47176).
libcupsfilters
ruft automatisch das entfernte PPD ohne Validierung ab (CVE-2024-47076 & 47175).- Ein manipuliertes PPD missbraucht den foomatic-rip-Filter, um beliebige Shell-Befehle auszuführen, wann immer etwas gedruckt wird (CVE-2024-47177).
Proof-of-Concept-Code ist öffentlich im Blog des Forschers und die Exploits erfordern keine Authentifizierung; Netzwerkzugang zu UDP/631 ist ausreichend.
Temporäre Minderung
sudo systemctl stop cups-browsed
sudo systemctl disable cups-browsed
sudo ufw deny 631/udp # or equivalent firewall rule
Patches wurden von großen Distributionen im Oktober 2024 veröffentlicht – stellen Sie sicher, dass cups-filters ≥ 2.0.0.
cupsd Symlink Listen
Fehlkonfiguration (CVE-2024-35235)
Das Platzieren eines symbolischen Links in der Listen
-Direktive von cupsd.conf führt dazu, dass cupds (root) einen chmod 666
auf einen vom Angreifer gewählten Pfad ausführt, was zu beschreibbaren Systemdateien und, auf Ubuntu, zur Codeausführung über ein bösartiges PPD mit FoomaticRIPCommandLine
führt.
Offensive Techniken
- Unauthentifizierter Rohdruckauftrag – viele Drucker akzeptieren
POST /ipp/print
ohne Authentifizierung. Eine bösartige PostScript-Payload kann Shell-Befehle (system("/bin/nc ...")
) auf High-End-Geräten ausführen. - Auftragsübernahme –
Cancel-Job
gefolgt vonSend-Document
ermöglicht es einem Angreifer, das Dokument einer anderen Person zu ersetzen, bevor es physisch gedruckt wird. - SNMP → IPP-Kombination – die Standard-Community
public
leakt oft den internen Warteschafennamen, der in der IPP-URL erforderlich ist.
Verteidigung Best Practices
- Patchen Sie CUPS und die Drucker-Firmware umgehend; abonnieren Sie die PSIRT-Feeds des Anbieters.
- Deaktivieren Sie
cups-browsed
und UDP/631, es sei denn, zeroconf-Druck ist erforderlich. - Beschränken Sie TCP/631 auf vertrauenswürdige Subnetze/VPN und erzwingen Sie TLS (ipps://).
- Fordern Sie Kerberos/Negotiate oder Zertifikatsauthentifizierung anstelle von anonymem Drucken.
- Überwachen Sie Protokolle:
/var/log/cups/error_log
mitLogLevel debug2
zeigt unsichere PPD-Downloads oder verdächtige Filteraufrufe an. - In Hochsicherheitsnetzwerken sollte das Drucken auf einen gehärteten, isolierten Druckserver verlagert werden, der Aufträge nur über USB an Geräte weiterleitet.
Referenzen
- Akamai – „Kritische Linux RCE-Sicherheitsanfälligkeit in CUPS – Was wir wissen und wie man sich vorbereitet“, April 2025.
- Debian Security Tracker – CVE-2024-35235 Details.
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.