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 का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।
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
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
# 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 के खिलाफ काम करता है):
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 फ़ाइल फर्मवेयर संस्करण, समर्थित दस्तावेज़ प्रारूप, आदि का प्रश्न करती है।
3. Shodan / Censys डॉर्क्स
shodan search 'product:"CUPS (IPP)" port:631'
70,000 से अधिक होस्ट अप्रैल 2025 में सार्वजनिक रूप से CUPS को उजागर कर रहे थे।
हाल की कमजोरियाँ (2023-2025)
वर्ष | CVE ID(s) | प्रभावित घटक | प्रभाव |
---|---|---|---|
2025 | CVE-2023-50739 | Lexmark फर्मवेयर (IPP पार्सर) | Heap-overflow → RCE over Wi-Fi/LAN |
2024 | CVE-2024-47076, 47175, 47176, 47177 | cups-browsed, libcupsfilters, libppd, cups-filters | CUPS ब्राउज़िंग सक्षम किसी भी Linux डेस्कटॉप/सर्वर पर पूर्ण अनधिकृत RCE श्रृंखला |
2024 | CVE-2024-35235 | cupsd 2.4.8- | Symlink ट्रिक → मनमाना chmod 666 → विशेषाधिकार वृद्धि |
2023 | CVE-2023-0856 (Canon) + Pwn2Own | sides विशेषता में स्टैक-ओवरफ्लो → दूरस्थ कोड निष्पादन |
cups-browsed RCE श्रृंखला (सितंबर 2024)
cups-browsed
प्रिंटर विज्ञापनों के लिए UDP/631 पर सुनता है।- एक हमलावर एक एकल स्पूफ किए गए पैकेट को एक दुर्भावनापूर्ण IPP URL (CVE-2024-47176) की ओर भेजता है।
libcupsfilters
बिना सत्यापन के स्वचालित रूप से दूरस्थ PPD लाता है (CVE-2024-47076 & 47175)।- एक तैयार 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 symlink Listen
misconfiguration (CVE-2024-35235)
cupsd.conf के Listen
निर्देश में एक प्रतीकात्मक लिंक रखने से cupds (root) एक हमलावर-चुने हुए पथ पर chmod 666
कर देता है, जिससे लिखने योग्य सिस्टम फ़ाइलें बनती हैं और, Ubuntu पर, एक दुर्भावनापूर्ण PPD के माध्यम से कोड निष्पादन होता है जिसमें FoomaticRIPCommandLine
होता है।
Offensive Techniques
- Unauthenticated raw print job – कई प्रिंटर
POST /ipp/print
को बिना प्रमाणीकरण के स्वीकार करते हैं। एक दुर्भावनापूर्ण PostScript पेलोड उच्च-स्तरीय उपकरणों पर शेल कमांड (system("/bin/nc ...")
) को सक्रिय कर सकता है। - Job Hijacking –
Cancel-Job
के बादSend-Document
एक हमलावर को किसी और के दस्तावेज़ को बदलने की अनुमति देता है इससे पहले कि इसे भौतिक रूप से प्रिंट किया जाए। - SNMP → IPP combo – डिफ़ॉल्ट समुदाय
public
अक्सर IPP URL में आवश्यक आंतरिक कतार नाम को लीक करता है।
Defensive Best Practices
- CUPS और प्रिंटर फर्मवेयर को तुरंत पैच करें; विक्रेता PSIRT फीड्स की सदस्यता लें।
cups-browsed
और UDP/631 को बंद करें जब तक कि ज़ेरोकॉन्फ़ प्रिंटिंग की आवश्यकता न हो।- 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 हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।