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

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

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

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>

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):
bash
ippfind --timeout 3 --txt -v "@local and port=631"  # lys drukkers
  • ipptool – arbitrêre versoeke gedefinieer in 'n .test lêer:
bash
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

bash
shodan search 'product:"CUPS (IPP)" port:631'

Meer as 70 000 hosts het CUPS publiek blootgestel in April 2025.


Onlangse Kw vulnerabilities (2023-2025)

JaarCVE ID(s)Aangetaste komponentImpak
2025CVE-2023-50739Lexmark firmware (IPP parser)Heap-overflow → RCE oor Wi-Fi/LAN
2024CVE-2024-47076, 47175, 47176, 47177cups-browsed, libcupsfilters, libppd, cups-filtersVolledige nie-geauthentiseerde RCE-ketting op enige Linux desktop/server met CUPS-browsing geaktiveer
2024CVE-2024-35235cupsd 2.4.8-Symlink trick → arbitrêre chmod 666 → privilige-eskalasie
2023CVE-2023-0856 (Canon) + Pwn2OwnStack-overflow in sides attribuut → afstandkode-uitvoering

cups-browsed RCE-ketting (September 2024)

  1. cups-browsed luister op UDP/631 vir drukkeradvertensies.
  2. 'n Aanvaller stuur 'n enkele gespoofde pakket wat na 'n kwaadwillige IPP-URL wys (CVE-2024-47176).
  3. libcupsfilters haal outomaties die afstand PPD sonder validasie (CVE-2024-47076 & 47175).
  4. '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.

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 KaapCancel-Job gevolg deur Send-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

  1. Patch CUPS en drukker firmware vinnig; teken in op verskaffer PSIRT feeds.
  2. Deaktiveer cups-browsed en UDP/631 tensy zeroconf drukwerk vereis word.
  3. Beperk TCP/631 tot vertroude subnetwerke/VPN en handhaaf TLS (ipps://).
  4. Vereis Kerberos/Negotiate of sertifikaat auth in plaas van anonieme drukwerk.
  5. Monitor logs: /var/log/cups/error_log met LogLevel debug2 sal onsamehangende PPD aflaaie of verdagte filter aanroepe wys.
  6. 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