Translated ['src/network-services-pentesting/pentesting-631-internet-pri

This commit is contained in:
Translator 2025-08-14 06:34:33 +00:00
parent 5b503c4c03
commit cc26143394

View File

@ -1,23 +1,103 @@
# Internet Printing Protocol
{{#include ../banners/hacktricks-training.md}}
# Internet Printing Protocol \(IPP\)
**Internet Printing Protocol (IPP)**, जैसा कि **RFC 2910** और **RFC 2911** में निर्दिष्ट है, नेटवर्क प्रिंटिंग के लिए डिफ़ॉल्ट मानक है। यह **HTTP/1.1** (या तो स्पष्ट-टेक्स्ट या TLS) के शीर्ष पर बैठता है और प्रिंट जॉब बनाने, प्रिंटर क्षमताओं को क्वेरी करने और कतारों का प्रबंधन करने के लिए एक समृद्ध API प्रदान करता है। आधुनिक एक्सटेंशन जैसे **IPP Everywhere** मोबाइल और क्लाउड वातावरण से ड्राइवर-लेस प्रिंटिंग की अनुमति देते हैं, जबकि समान पैकेट प्रारूप को 3-D प्रिंटर के लिए फिर से उपयोग किया गया है।
**Internet Printing Protocol (IPP)**, जैसा कि **RFC2910** और **RFC2911** में निर्दिष्ट है, इंटरनेट पर प्रिंटिंग के लिए एक आधार के रूप में कार्य करता है। इसकी विस्तारित होने की क्षमता **IPP Everywhere** जैसे विकासों द्वारा प्रदर्शित की गई है, जिसका उद्देश्य मोबाइल और क्लाउड प्रिंटिंग को मानकीकृत करना है, और **3D प्रिंटिंग** के लिए एक्सटेंशन का परिचय देना है।
दुर्भाग्यवश, पोर्ट **631/tcp (और प्रिंटर खोज के लिए 631/udp)** को उजागर करना अक्सर गंभीर सुरक्षा समस्याओं की ओर ले जाता है - पारंपरिक कार्यालय प्रिंटर और किसी भी Linux/Unix होस्ट पर जो **CUPS** चला रहा है।
**HTTP** प्रोटोकॉल का लाभ उठाते हुए, IPP स्थापित सुरक्षा प्रथाओं से लाभान्वित होता है जिसमें **basic/digest authentication** और **SSL/TLS encryption** शामिल हैं। प्रिंट जॉब सबमिट करने या प्रिंटर स्थिति पूछने जैसी क्रियाएँ **HTTP POST requests** के माध्यम से IPP सर्वर पर की जाती हैं, जो **port 631/tcp** पर कार्य करता है।
IPP का एक प्रसिद्ध कार्यान्वयन **CUPS** है, जो विभिन्न Linux वितरणों और OS X में प्रचलित एक ओपन-सोर्स प्रिंटिंग सिस्टम है। इसकी उपयोगिता के बावजूद, IPP, LPD की तरह, **PostScript** या **PJL files** के माध्यम से दुर्भावनापूर्ण सामग्री को प्रसारित करने के लिए शोषित किया जा सकता है, जो एक संभावित सुरक्षा जोखिम को उजागर करता है।
---
## Quick PoC crafting raw IPP with Python
```python
# Example of sending an IPP request using Python
import requests
import struct, requests
url = "http://printer.example.com:631/ipp/print"
headers = {"Content-Type": "application/ipp"}
data = b"..." # IPP request data goes here
# 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
response = requests.post(url, headers=headers, data=data, verify=True)
print(response.status_code)
r = requests.post("http://printer:631/ipp/print", headers={"Content-Type":"application/ipp"}, data=ipp)
print(r.status_code, r.content[:40])
```
यदि आप [**प्रिंटर हैक करने के बारे में अधिक जानना चाहते हैं, तो इस पृष्ठ को पढ़ें**](http://hacking-printers.net/wiki/index.php/Main_Page)।
---
## 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) | प्रभावित घटक | प्रभाव |
|------|-----------|--------------------|--------|
| 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)
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 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
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.
{{#include ../banners/hacktricks-training.md}}