Internet Printing Protocol
Reading time: 5 minutes
tip
Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
Die Internet Printing Protocol (IPP), soos gespesifiseer in RFC 2910 en RFC 2911, is die de facto standaard vir netwerkdruk. Dit sit bo-op HTTP/1.1 (of dit nou duidelike teks of TLS is) en stel 'n ryk API beskikbaar vir die skep van drukwerk, die navraag van drukker vermoëns en die bestuur van wagte. Moderne uitbreidings soos IPP Everywhere laat selfs bestuurder-loos druk vanaf mobiele en wolkomgewings toe, terwyl dieselfde pakketformaat hergebruik is vir 3-D drukkers.
Ongelukkig lei die blootstelling van poort 631/tcp (en 631/udp vir drukker ontdekking) dikwels tot ernstige sekuriteitskwessies – beide op tradisionele kantoor drukkers en op enige Linux/Unix gasheer wat CUPS draai.
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])
Opname & Verkenning
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>
Die cups-info
skripte onttrek model, toestand en wagstatistieke terwyl cups-queue-info
hangende take opnoem.
2. IPP nutsmiddels van CUPS
ippfind
– multicast/UDP ontdekking (werk teen cups-browsed):
ippfind --timeout 3 --txt -v "@local and port=631" # lys drukkers
ipptool
– arbitrêre versoeke gedefinieer in 'n .test lêer:
ipptool -tv ipp://<IP>/ipp/print get-printer-attributes.test
Die saamgevoegde get-printer-attributes.test lêer vra firmware weergawe, ondersteunde dokumentformate, ens.
3. Shodan / Censys dorks
shodan search 'product:"CUPS (IPP)" port:631'
Meer as 70 000 hosts het CUPS publiek blootgestel in April 2025.
Onlangse Kw vulnerabilities (2023-2025)
Jaar | CVE ID(s) | Aangetaste komponent | Impak |
---|---|---|---|
2025 | CVE-2023-50739 | Lexmark firmware (IPP parser) | Heap-overflow → RCE oor Wi-Fi/LAN |
2024 | CVE-2024-47076, 47175, 47176, 47177 | cups-browsed, libcupsfilters, libppd, cups-filters | Volledige nie-geauthentiseerde RCE-ketting op enige Linux desktop/server met CUPS-browsing geaktiveer |
2024 | CVE-2024-35235 | cupsd 2.4.8- | Symlink trick → arbitrêre chmod 666 → privilige-eskalasie |
2023 | CVE-2023-0856 (Canon) + Pwn2Own | Stack-overflow in sides attribuut → afstandkode-uitvoering |
cups-browsed RCE-ketting (September 2024)
cups-browsed
luister op UDP/631 vir drukkeradvertensies.- 'n Aanvaller stuur 'n enkele gespoofde pakket wat na 'n kwaadwillige IPP-URL wys (CVE-2024-47176).
libcupsfilters
haal outomaties die afstand PPD sonder validasie (CVE-2024-47076 & 47175).- 'n Gemaakte PPD misbruik die foomatic-rip filter om arbitrêre shell-opdragte uit te voer wanneer iets gedruk word (CVE-2024-47177).
Bewys-van-konsep kode is publiek op die navorser se blog en ontploffings vereis geen outentikasie nie; netwerktoegang tot UDP/631 is genoeg.
Tydelike versagtings
sudo systemctl stop cups-browsed
sudo systemctl disable cups-browsed
sudo ufw deny 631/udp # or equivalent firewall rule
Patches is in Oktober 2024 deur groot verspreidings vrygestel – verseker cups-filters ≥ 2.0.0.
cupsd symlink Listen
miskonfigurasie (CVE-2024-35235)
Die plasing van 'n simboliese skakel in cupsd.conf se Listen
riglyn veroorsaak dat cupds (root) chmod 666
'n deur 'n aanvaller gekose pad, wat lei tot skryfbare stelselfeiles en, op Ubuntu, kode-uitvoering via 'n kwaadwillige PPD met FoomaticRIPCommandLine
.
Offensiewe Tegnieke
- Ongeauthentiseerde rou drukwerktaak – baie drukkers aanvaar
POST /ipp/print
sonder auth. 'n Kwaadwillige PostScript payload kan skulpopdragte (system("/bin/nc ...")
) op hoë-end toestelle aanroep. - Taak Kaap –
Cancel-Job
gevolg deurSend-Document
laat 'n aanvaller toe om iemand anders se dokument te vervang voordat dit fisies gedruk word. - SNMP → IPP kombinasie – standaard gemeenskap
public
lek dikwels die interne wagnaam wat in die IPP URL benodig word.
Defensiewe Beste Praktyke
- Patch CUPS en drukker firmware vinnig; teken in op verskaffer PSIRT feeds.
- Deaktiveer
cups-browsed
en UDP/631 tensy zeroconf drukwerk vereis word. - Beperk TCP/631 tot vertroude subnetwerke/VPN en handhaaf TLS (ipps://).
- Vereis Kerberos/Negotiate of sertifikaat auth in plaas van anonieme drukwerk.
- Monitor logs:
/var/log/cups/error_log
metLogLevel debug2
sal onsamehangende PPD aflaaie of verdagte filter aanroepe wys. - In hoë-sekuriteit netwerke, skuif drukwerk na 'n geharde, geïsoleerde drukbediener wat take via USB slegs na toestelle proxy.
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
Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.