Internet Printing Protocol

Reading time: 6 minutes

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें

Internet Printing Protocol (IPP), जैसा कि RFC 2910 और RFC 2911 में निर्दिष्ट है, नेटवर्क प्रिंटिंग के लिए डिफ़ॉल्ट मानक है। यह HTTP/1.1 (या तो स्पष्ट-टेक्स्ट या TLS) के शीर्ष पर बैठता है और प्रिंट जॉब बनाने, प्रिंटर क्षमताओं को क्वेरी करने और कतारों का प्रबंधन करने के लिए एक समृद्ध API प्रदान करता है। आधुनिक एक्सटेंशन जैसे IPP Everywhere मोबाइल और क्लाउड वातावरण से ड्राइवर-लेस प्रिंटिंग की अनुमति देते हैं, जबकि समान पैकेट प्रारूप को 3-D प्रिंटर के लिए फिर से उपयोग किया गया है।

दुर्भाग्यवश, पोर्ट 631/tcp (और प्रिंटर खोज के लिए 631/udp) को उजागर करना अक्सर गंभीर सुरक्षा समस्याओं की ओर ले जाता है - पारंपरिक कार्यालय प्रिंटर और किसी भी Linux/Unix होस्ट पर जो 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])

Enumeration & Recon

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>

cups-info स्क्रिप्ट मॉडल, स्थिति और कतार के आँकड़े निकालती है जबकि cups-queue-info लंबित कार्यों की गणना करती है।

2. CUPS से IPP उपयोगिताएँ

  • ippfind – मल्टीकास्ट/UDP खोज (cups-browsed के खिलाफ काम करता है):
bash
ippfind --timeout 3 --txt -v "@local and port=631"  # प्रिंटर सूची
  • ipptool.test फ़ाइल में परिभाषित मनमाने अनुरोध:
bash
ipptool -tv ipp://<IP>/ipp/print get-printer-attributes.test

बंडल की गई get-printer-attributes.test फ़ाइल फर्मवेयर संस्करण, समर्थित दस्तावेज़ प्रारूप, आदि का प्रश्न करती है।

3. Shodan / Censys डॉर्क्स

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

70,000 से अधिक होस्ट अप्रैल 2025 में सार्वजनिक रूप से CUPS को उजागर कर रहे थे।


हाल की कमजोरियाँ (2023-2025)

वर्षCVE ID(s)प्रभावित घटकप्रभाव
2025CVE-2023-50739Lexmark फर्मवेयर (IPP पार्सर)Heap-overflow → RCE over Wi-Fi/LAN
2024CVE-2024-47076, 47175, 47176, 47177cups-browsed, libcupsfilters, libppd, cups-filtersCUPS ब्राउज़िंग सक्षम किसी भी Linux डेस्कटॉप/सर्वर पर पूर्ण अनधिकृत RCE श्रृंखला
2024CVE-2024-35235cupsd 2.4.8-Symlink ट्रिक → मनमाना chmod 666 → विशेषाधिकार वृद्धि
2023CVE-2023-0856 (Canon) + Pwn2Ownsides विशेषता में स्टैक-ओवरफ्लो → दूरस्थ कोड निष्पादन

cups-browsed RCE श्रृंखला (सितंबर 2024)

  1. cups-browsed प्रिंटर विज्ञापनों के लिए UDP/631 पर सुनता है।
  2. एक हमलावर एक एकल स्पूफ किए गए पैकेट को एक दुर्भावनापूर्ण IPP URL (CVE-2024-47176) की ओर भेजता है।
  3. libcupsfilters बिना सत्यापन के स्वचालित रूप से दूरस्थ PPD लाता है (CVE-2024-47076 & 47175)।
  4. एक तैयार PPD foomatic-rip फ़िल्टर का दुरुपयोग करता है ताकि जब भी कुछ प्रिंट किया जाए, मनमाने शेल कमांड निष्पादित किए जा सकें (CVE-2024-47177)।

प्रूफ-ऑफ-कॉन्सेप्ट कोड शोधकर्ता के ब्लॉग पर सार्वजनिक है और शोषण के लिए कोई प्रमाणीकरण की आवश्यकता नहीं है; UDP/631 तक नेटवर्क पहुंच पर्याप्त है।

अस्थायी शमन

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

Patches को प्रमुख वितरणों द्वारा अक्टूबर 2024 में जारी किया गया था - सुनिश्चित करें cups-filters ≥ 2.0.0

cupsd.conf के Listen निर्देश में एक प्रतीकात्मक लिंक रखने से cupds (root) एक हमलावर-चुने हुए पथ पर chmod 666 कर देता है, जिससे लिखने योग्य सिस्टम फ़ाइलें बनती हैं और, Ubuntu पर, एक दुर्भावनापूर्ण PPD के माध्यम से कोड निष्पादन होता है जिसमें FoomaticRIPCommandLine होता है।


Offensive Techniques

  • Unauthenticated raw print job – कई प्रिंटर POST /ipp/print को बिना प्रमाणीकरण के स्वीकार करते हैं। एक दुर्भावनापूर्ण PostScript पेलोड उच्च-स्तरीय उपकरणों पर शेल कमांड (system("/bin/nc ...")) को सक्रिय कर सकता है।
  • Job HijackingCancel-Job के बाद Send-Document एक हमलावर को किसी और के दस्तावेज़ को बदलने की अनुमति देता है इससे पहले कि इसे भौतिक रूप से प्रिंट किया जाए।
  • SNMP → IPP combo – डिफ़ॉल्ट समुदाय public अक्सर IPP URL में आवश्यक आंतरिक कतार नाम को लीक करता है।

Defensive Best Practices

  1. CUPS और प्रिंटर फर्मवेयर को तुरंत पैच करें; विक्रेता PSIRT फीड्स की सदस्यता लें।
  2. cups-browsed और UDP/631 को बंद करें जब तक कि ज़ेरोकॉन्फ़ प्रिंटिंग की आवश्यकता न हो।
  3. TCP/631 को विश्वसनीय उपनेट/VPN तक सीमित करें और TLS (ipps://) को लागू करें।
  4. गुमनाम प्रिंटिंग के बजाय Kerberos/Negotiate या प्रमाणपत्र प्रमाणीकरण की आवश्यकता करें।
  5. लॉग की निगरानी करें: /var/log/cups/error_log के साथ LogLevel debug2 असंगत PPD डाउनलोड या संदिग्ध फ़िल्टर सक्रियण को दिखाएगा।
  6. उच्च-सुरक्षा नेटवर्क में, प्रिंटिंग को एक मजबूत, अलग प्रिंट सर्वर पर स्थानांतरित करें जो केवल 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 हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें