Internet Printing Protocol
Reading time: 6 minutes
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Το Internet Printing Protocol (IPP), όπως καθορίζεται στο RFC 2910 και RFC 2911, είναι το de-facto πρότυπο για την εκτύπωση μέσω δικτύου. Βρίσκεται πάνω από το HTTP/1.1 (είτε σε καθαρό κείμενο είτε σε TLS) και εκθέτει ένα πλούσιο API για τη δημιουργία εκτυπωτικών εργασιών, την αναζήτηση δυνατοτήτων εκτυπωτή και τη διαχείριση ουρών. Σύγχρονες επεκτάσεις όπως το IPP Everywhere επιτρέπουν ακόμη και την εκτύπωση χωρίς οδηγούς από κινητές και cloud περιβάλλοντα, ενώ η ίδια μορφή πακέτου έχει επαναχρησιμοποιηθεί για εκτυπωτές 3-D.
Δυστυχώς, η έκθεση της θύρας 631/tcp (και 631/udp για την ανακάλυψη εκτυπωτών) συχνά οδηγεί σε σοβαρά ζητήματα ασφάλειας – τόσο σε παραδοσιακούς εκτυπωτές γραφείου όσο και σε οποιονδήποτε Linux/Unix υπολογιστή που εκτελεί το CUPS.
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
script εξάγει μοντέλο, κατάσταση και στατιστικά ουρών, ενώ το cups-queue-info
απαριθμεί τις εκκρεμείς εργασίες.
2. IPP utilities από CUPS
ippfind
– multicast/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 αρχείο ερωτά την έκδοση firmware, υποστηριζόμενες μορφές εγγράφων, κ.λπ.
3. Shodan / Censys dorks
shodan search 'product:"CUPS (IPP)" port:631'
Περισσότεροι από 70 000 υπολογιστές εκθέτουν δημόσια το CUPS τον Απρίλιο του 2025.
Πρόσφατες Ευπάθειες (2023-2025)
Έτος | CVE ID(s) | Επηρεαζόμενο συστατικό | Επιπτώσεις |
---|---|---|---|
2025 | CVE-2023-50739 | Firmware Lexmark (IPP parser) | Heap-overflow → RCE μέσω Wi-Fi/LAN |
2024 | CVE-2024-47076, 47175, 47176, 47177 | cups-browsed, libcupsfilters, libppd, cups-filters | Πλήρης αδιάκριτη αλυσίδα RCE σε οποιονδήποτε Linux υπολογιστή/διακομιστή με ενεργοποιημένο CUPS browsing |
2024 | CVE-2024-35235 | cupsd 2.4.8- | Symlink trick → αυθαίρετο chmod 666 → κλιμάκωση προνομίων |
2023 | CVE-2023-0856 (Canon) + Pwn2Own | Stack-overflow στο χαρακτηριστικό sides → απομακρυσμένη εκτέλεση κώδικα |
Αλυσίδα RCE cups-browsed (Σεπτέμβριος 2024)
cups-browsed
ακούει σε UDP/631 για διαφημίσεις εκτυπωτών.- Ένας επιτιθέμενος στέλνει ένα μόνο ψευδές πακέτο που δείχνει σε μια κακόβουλη διεύθυνση IPP (CVE-2024-47176).
libcupsfilters
αυτόματα ανακτά το απομακρυσμένο PPD χωρίς έλεγχο (CVE-2024-47076 & 47175).- Ένα κακόβουλο PPD εκμεταλλεύεται το φίλτρο foomatic-rip για να εκτελεί αυθαίρετες εντολές shell κάθε φορά που εκτυπώνεται κάτι (CVE-2024-47177).
Ο κώδικας απόδειξης της έννοιας είναι δημόσιος στο blog του ερευνητή και οι εκμεταλλεύσεις απαιτούν καμία πιστοποίηση; η πρόσβαση στο δίκτυο στο UDP/631 είναι αρκετή.
Προσωρινές μετρήσεις
sudo systemctl stop cups-browsed
sudo systemctl disable cups-browsed
sudo ufw deny 631/udp # or equivalent firewall rule
Patches were released by major distributions in October 2024 – ensure cups-filters ≥ 2.0.0.
cupsd symlink Listen
misconfiguration (CVE-2024-35235)
Η τοποθέτηση ενός συμβολικού συνδέσμου στην οδηγία Listen
του cupsd.conf προκαλεί το cupds (root) να chmod 666
μια διαδρομή που επιλέγει ο επιτιθέμενος, οδηγώντας σε αρχεία συστήματος που είναι εγγράψιμα και, στο Ubuntu, εκτέλεση κώδικα μέσω ενός κακόβουλου PPD με FoomaticRIPCommandLine
.
Offensive Techniques
- Unauthenticated raw print job – πολλοί εκτυπωτές δέχονται
POST /ipp/print
χωρίς αυθεντικοποίηση. Ένα κακόβουλο PostScript payload μπορεί να καλέσει εντολές shell (system("/bin/nc ...")
) σε συσκευές υψηλής τεχνολογίας. - Job Hijacking –
Cancel-Job
ακολουθούμενο απόSend-Document
επιτρέπει σε έναν επιτιθέμενο να αντικαταστήσει το έγγραφο κάποιου άλλου πριν εκτυπωθεί φυσικά. - SNMP → IPP combo – η προεπιλεγμένη κοινότητα
public
συχνά διαρρέει το εσωτερικό όνομα ουράς που απαιτείται στο URL IPP.
Defensive Best Practices
- Ενημερώστε άμεσα το CUPS και το firmware του εκτυπωτή; εγγραφείτε σε τροφοδοσίες PSIRT προμηθευτών.
- Απενεργοποιήστε το
cups-browsed
και το UDP/631 εκτός αν απαιτείται εκτύπωση zeroconf. - Περιορίστε το 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 Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.