Internet Printing Protocol

Reading time: 6 minutes

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks

Internet Printing Protocol (IPP), kama ilivyoainishwa katika RFC 2910 na RFC 2911, ni kiwango cha de-facto kwa uchapishaji wa mtandao. Inakaa juu ya HTTP/1.1 (iwe ni maandiko wazi au TLS) na inatoa API tajiri kwa ajili ya kuunda kazi za uchapishaji, kuuliza uwezo wa printer na kusimamia foleni. Upanuzi wa kisasa kama IPP Everywhere hata unaruhusu uchapishaji bila madereva kutoka kwa mazingira ya simu na wingu, wakati muundo sawa wa pakiti umerejelewa kwa printers za 3-D.

Kwa bahati mbaya, kufichua bandari 631/tcp (na 631/udp kwa ajili ya kugundua printer) mara nyingi husababisha matatizo makubwa ya usalama – kwa printers za ofisi za jadi na kwenye mwenyeji yeyote wa Linux/Unix unaendesha CUPS.


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])

Uhesabu & Upelelezi

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>

The cups-info script inatoa mfano, hali na takwimu za foleni wakati cups-queue-info inataja kazi zinazongoja.

2. IPP utilities kutoka CUPS

  • ippfind – ugunduzi wa multicast/UDP (inafanya kazi dhidi ya cups-browsed):
bash
ippfind --timeout 3 --txt -v "@local and port=631"  # orodhesha printers
  • ipptool – maombi ya kawaida yaliyofafanuliwa katika faili ya .test:
bash
ipptool -tv ipp://<IP>/ipp/print get-printer-attributes.test

Faili iliyojumuishwa get-printer-attributes.test inachunguza toleo la firmware, fomati za hati zinazoungwa mkono, n.k.

3. Shodan / Censys dorks

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

Zaidi ya 70,000 wenyeji walikuwa wakionyesha hadharani CUPS mnamo Aprili 2025.


Uthibitisho wa Hivi Karibuni (2023-2025)

MwakaCVE ID(s)Kipengele kilichoathirikaAthari
2025CVE-2023-50739Lexmark firmware (IPP parser)Heap-overflow β†’ RCE kupitia Wi-Fi/LAN
2024CVE-2024-47076, 47175, 47176, 47177cups-browsed, libcupsfilters, libppd, cups-filtersMnyororo wa RCE usio na uthibitisho kamili kwenye desktop/server yoyote ya Linux iliyo na CUPS browsing imewezeshwa
2024CVE-2024-35235cupsd 2.4.8-Njia ya symlink β†’ chmod 666 isiyo na mipaka β†’ kupandisha hadhi
2023CVE-2023-0856 (Canon) + Pwn2OwnStack-overflow katika sifa ya sides β†’ utekelezaji wa msimbo wa mbali

Mnyororo wa RCE wa cups-browsed (Septemba 2024)

  1. cups-browsed inasikiliza kwenye UDP/631 kwa matangazo ya printer.
  2. Mshambuliaji anatumia pakiti moja ya kudanganya ikielekeza kwenye URL ya IPP mbaya (CVE-2024-47176).
  3. libcupsfilters inapata kiotomatiki PPD ya mbali bila uthibitisho (CVE-2024-47076 & 47175).
  4. PPD iliyoundwa inatumia kichujio cha foomatic-rip kutekeleza amri za shell zisizo na mipaka kila wakati kitu kinapochapishwa (CVE-2024-47177).

Msimbo wa uthibitisho wa dhana upo hadharani kwenye blogu ya mtafiti na unahitaji hakuna uthibitisho; ufikiaji wa mtandao kwa UDP/631 unatosha.

Njia za muda za kupunguza

sudo systemctl stop cups-browsed
sudo systemctl disable cups-browsed
sudo ufw deny 631/udp  # or equivalent firewall rule

Patches zilitolewa na usambazaji mkubwa mnamo Oktoba 2024 – hakikisha cups-filters β‰₯ 2.0.0.

Kuweka kiungo cha alama katika cupsd.conf’s Listen directive kunasababisha cupds (root) kufanya chmod 666 kwenye njia iliyochaguliwa na mshambuliaji, ikisababisha faili za mfumo zinazoweza kuandikwa na, kwenye Ubuntu, utekelezaji wa msimbo kupitia PPD mbaya na FoomaticRIPCommandLine.


Mbinu za Kihalifu

  • Kazi ya uchapishaji isiyo na uthibitisho – printers nyingi zinakubali POST /ipp/print bila uthibitisho. Payload mbaya ya PostScript inaweza kuita amri za shell (system("/bin/nc ...")) kwenye vifaa vya hali ya juu.
  • Kuhijack Kazi – Cancel-Job ikifuatwa na Send-Document inaruhusu mshambuliaji kubadilisha hati ya mtu mwingine kabla ya kuchapishwa kimwili.
  • SNMP β†’ IPP combo – jamii ya chaguo-msingi public mara nyingi inavuja jina la foleni ya ndani inayohitajika katika URL ya IPP.

Mbinu Bora za Kijamii

  1. Sasisha CUPS na firmware ya printer mara moja; jiandikishe kwa feeds za PSIRT za muuzaji.
  2. Zima cups-browsed na UDP/631 isipokuwa uchapishaji wa zeroconf unahitajika.
  3. Punguza TCP/631 kwa subnets/VPN zinazotegemewa na enforce TLS (ipps://).
  4. Hitaji Kerberos/Negotiate au uthibitisho wa cheti badala ya uchapishaji wa bila majina.
  5. Fuata kumbukumbu: /var/log/cups/error_log na LogLevel debug2 itaonyesha upakuaji wa PPD zisizo thabiti au mwito wa chujio wa kutatanisha.
  6. Katika mitandao ya usalama wa juu, hamasisha uchapishaji kwenye seva ya uchapishaji iliyoharibiwa, iliyotengwa ambayo inapeleka kazi kwa vifaa kupitia USB pekee.

Marejeleo

  • Akamai – β€œUthibitisho wa RCE wa Linux wa Kihafidhina katika CUPS β€” Kile Tunachojua na Jinsi ya Kujiandaa”, Aprili 2025.
  • Debian Security Tracker – maelezo ya CVE-2024-35235.

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks