mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/network-services-pentesting/pentesting-631-internet-pri
This commit is contained in:
parent
e6ef996d60
commit
426fbc5d7a
@ -1,23 +1,103 @@
|
||||
# Internet Printing Protocol
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
# Internet Printing Protocol \(IPP\)
|
||||
Το **Internet Printing Protocol (IPP)**, όπως καθορίζεται στο **RFC 2910** και **RFC 2911**, είναι το de-facto πρότυπο για την εκτύπωση μέσω δικτύου. Βρίσκεται πάνω από το **HTTP/1.1** (είτε σε καθαρό κείμενο είτε σε TLS) και εκθέτει ένα πλούσιο API για τη δημιουργία εκτυπωτικών εργασιών, την αναζήτηση δυνατοτήτων εκτυπωτή και τη διαχείριση ουρών. Σύγχρονες επεκτάσεις όπως το **IPP Everywhere** επιτρέπουν ακόμη και την εκτύπωση χωρίς οδηγούς από κινητές και cloud περιβάλλοντα, ενώ η ίδια μορφή πακέτου έχει επαναχρησιμοποιηθεί για εκτυπωτές 3-D.
|
||||
|
||||
Το **Internet Printing Protocol (IPP)**, όπως καθορίζεται στο **RFC2910** και **RFC2911**, χρησιμεύει ως θεμέλιο για την εκτύπωση μέσω του διαδικτύου. Η ικανότητά του να επεκτείνεται επιδεικνύεται από εξελίξεις όπως το **IPP Everywhere**, που στοχεύει στην τυποποίηση της εκτύπωσης από κινητές συσκευές και το cloud, και την εισαγωγή επεκτάσεων για **3D printing**.
|
||||
Δυστυχώς, η έκθεση της θύρας **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])
|
||||
```
|
||||
Αν θέλετε να μάθετε περισσότερα για το [**hacking printers διαβάστε αυτή τη σελίδα**](http://hacking-printers.net/wiki/index.php/Main_Page).
|
||||
---
|
||||
## Αριθμητική & Αναγνώριση
|
||||
|
||||
### 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` script εξάγει μοντέλο, κατάσταση και στατιστικά ουρών, ενώ το `cups-queue-info` απαριθμεί τις εκκρεμείς εργασίες.
|
||||
|
||||
### 2. IPP utilities από CUPS
|
||||
* `ippfind` – multicast/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* αρχείο ερωτά την έκδοση firmware, υποστηριζόμενες μορφές εγγράφων, κ.λπ.
|
||||
|
||||
### 3. Shodan / Censys dorks
|
||||
```bash
|
||||
shodan search 'product:"CUPS (IPP)" port:631'
|
||||
```
|
||||
Περισσότεροι από **70 000** υπολογιστές εκθέτουν δημόσια το CUPS τον Απρίλιο του 2025.
|
||||
|
||||
---
|
||||
## Πρόσφατες Ευπάθειες (2023-2025)
|
||||
|
||||
| Έτος | CVE ID(s) | Επηρεαζόμενο συστατικό | Επιπτώσεις |
|
||||
|------|-----------|--------------------|--------|
|
||||
| 2025 | CVE-2023-50739 | Firmware Lexmark (IPP parser) | Heap-overflow → RCE μέσω Wi-Fi/LAN |
|
||||
| 2024 | CVE-2024-47076, 47175, 47176, 47177 | cups-browsed, libcupsfilters, libppd, cups-filters | Πλήρης αδιάκριτη αλυσίδα RCE σε οποιονδήποτε Linux υπολογιστή/διακομιστή με ενεργοποιημένο CUPS browsing |
|
||||
| 2024 | CVE-2024-35235 | cupsd 2.4.8- | Symlink trick → αυθαίρετο **chmod 666** → κλιμάκωση προνομίων |
|
||||
| 2023 | CVE-2023-0856 (Canon) + Pwn2Own | Stack-overflow στο χαρακτηριστικό `sides` → απομακρυσμένη εκτέλεση κώδικα |
|
||||
|
||||
### Αλυσίδα RCE cups-browsed (Σεπτέμβριος 2024)
|
||||
1. `cups-browsed` ακούει σε **UDP/631** για διαφημίσεις εκτυπωτών.
|
||||
2. Ένας επιτιθέμενος στέλνει ένα μόνο ψευδές πακέτο που δείχνει σε μια κακόβουλη διεύθυνση IPP (CVE-2024-47176).
|
||||
3. `libcupsfilters` αυτόματα ανακτά το απομακρυσμένο **PPD** χωρίς έλεγχο (CVE-2024-47076 & 47175).
|
||||
4. Ένα κακόβουλο PPD εκμεταλλεύεται το φίλτρο **foomatic-rip** για να εκτελεί αυθαίρετες εντολές shell κάθε φορά που εκτυπώνεται κάτι (CVE-2024-47177).
|
||||
|
||||
Ο κώδικας απόδειξης της έννοιας είναι δημόσιος στο blog του ερευνητή και οι εκμεταλλεύσεις απαιτούν **καμία πιστοποίηση**; η πρόσβαση στο δίκτυο στο UDP/631 είναι αρκετή.
|
||||
|
||||
#### Προσωρινές μετρήσεις
|
||||
```
|
||||
sudo systemctl stop cups-browsed
|
||||
sudo systemctl disable cups-browsed
|
||||
sudo ufw deny 631/udp # or equivalent firewall rule
|
||||
```
|
||||
Patches were released by major distributions in October 2024 – ensure **cups-filters ≥ 2.0.0**.
|
||||
|
||||
### cupsd symlink `Listen` misconfiguration (CVE-2024-35235)
|
||||
Η τοποθέτηση ενός συμβολικού συνδέσμου στην οδηγία `Listen` του *cupsd.conf* προκαλεί το **cupds (root)** να `chmod 666` μια διαδρομή που επιλέγει ο επιτιθέμενος, οδηγώντας σε αρχεία συστήματος που είναι εγγράψιμα και, στο Ubuntu, εκτέλεση κώδικα μέσω ενός κακόβουλου PPD με `FoomaticRIPCommandLine`.
|
||||
|
||||
---
|
||||
## Offensive Techniques
|
||||
|
||||
* **Unauthenticated raw print job** – πολλοί εκτυπωτές δέχονται `POST /ipp/print` χωρίς αυθεντικοποίηση. Ένα κακόβουλο **PostScript** payload μπορεί να καλέσει εντολές shell (`system("/bin/nc ...")`) σε συσκευές υψηλής τεχνολογίας.
|
||||
* **Job Hijacking** – `Cancel-Job` ακολουθούμενο από `Send-Document` επιτρέπει σε έναν επιτιθέμενο να αντικαταστήσει το έγγραφο κάποιου άλλου πριν εκτυπωθεί φυσικά.
|
||||
* **SNMP → IPP combo** – η προεπιλεγμένη κοινότητα `public` συχνά διαρρέει το εσωτερικό όνομα ουράς που απαιτείται στο URL IPP.
|
||||
|
||||
---
|
||||
## Defensive Best Practices
|
||||
1. Ενημερώστε άμεσα το CUPS και το firmware του εκτυπωτή; εγγραφείτε σε τροφοδοσίες PSIRT προμηθευτών.
|
||||
2. Απενεργοποιήστε το `cups-browsed` και το UDP/631 εκτός αν απαιτείται εκτύπωση zeroconf.
|
||||
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}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user