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

This commit is contained in:
Translator 2025-08-14 06:35:21 +00:00
parent 9a51a30f9e
commit cda41eea87

View File

@ -1,23 +1,103 @@
# Internet Printing Protocol
{{#include ../banners/hacktricks-training.md}}
# Internet Printing Protocol \(IPP\)
Die **Internet Printing Protocol (IPP)**, soos gespesifiseer in **RFC 2910** en **RFC 2911**, is die de facto standaard vir netwerkdruk. Dit sit bo-op **HTTP/1.1** (of dit nou duidelike teks of TLS is) en stel 'n ryk API beskikbaar vir die skep van drukwerk, die navraag van drukker vermoëns en die bestuur van wagte. Moderne uitbreidings soos **IPP Everywhere** laat selfs bestuurder-loos druk vanaf mobiele en wolkomgewings toe, terwyl dieselfde pakketformaat hergebruik is vir 3-D drukkers.
Die **Internet Printing Protocol (IPP)**, soos gespesifiseer in **RFC2910** en **RFC2911**, dien as 'n grondslag vir druk oor die internet. Die vermoë om uitgebrei te word, word getoon deur ontwikkelings soos **IPP Everywhere**, wat daarop gemik is om mobiele en wolkdruk te standaardiseer, en die bekendstelling van uitbreidings vir **3D druk**.
Ongelukkig lei die blootstelling van poort **631/tcp (en 631/udp vir drukker ontdekking)** dikwels tot ernstige sekuriteitskwessies beide op tradisionele kantoor drukkers en op enige Linux/Unix gasheer wat **CUPS** draai.
Deur die gebruik van die **HTTP** protokol, voordeel IPP uit gevestigde sekuriteitspraktyke insluitend **basic/digest authentication** en **SSL/TLS encryption**. Aksies soos die indien van 'n druktaak of die navraag van drukkerstatus word uitgevoer deur middel van **HTTP POST requests** wat gerig is op die IPP bediener, wat op **port 631/tcp** werk.
'n Bekende implementering van IPP is **CUPS**, 'n oopbron-druksisteem wat algemeen voorkom in verskeie Linux verspreidings en OS X. Ten spyte van sy nut, kan IPP, soortgelyk aan LPD, uitgebuit word om kwaadwillige inhoud deur **PostScript** of **PJL files** oor te dra, wat 'n potensiële sekuriteitsrisiko beklemtoon.
---
## 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])
```
As jy meer wil leer oor [**hacking printers lees hierdie bladsy**](http://hacking-printers.net/wiki/index.php/Main_Page).
---
## Opname & Verkenning
### 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>
```
Die `cups-info` skripte onttrek model, toestand en wagstatistieke terwyl `cups-queue-info` hangende take opnoem.
### 2. IPP nutsmiddels van CUPS
* `ippfind` multicast/UDP ontdekking (werk teen cups-browsed):
```bash
ippfind --timeout 3 --txt -v "@local and port=631" # lys drukkers
```
* `ipptool` arbitrêre versoeke gedefinieer in 'n *.test* lêer:
```bash
ipptool -tv ipp://<IP>/ipp/print get-printer-attributes.test
```
Die saamgevoegde *get-printer-attributes.test* lêer vra firmware weergawe, ondersteunde dokumentformate, ens.
### 3. Shodan / Censys dorks
```bash
shodan search 'product:"CUPS (IPP)" port:631'
```
Meer as **70 000** hosts het CUPS publiek blootgestel in April 2025.
---
## Onlangse Kw vulnerabilities (2023-2025)
| Jaar | CVE ID(s) | Aangetaste komponent | Impak |
|------|-----------|----------------------|-------|
| 2025 | CVE-2023-50739 | Lexmark firmware (IPP parser) | Heap-overflow → RCE oor Wi-Fi/LAN |
| 2024 | CVE-2024-47076, 47175, 47176, 47177 | cups-browsed, libcupsfilters, libppd, cups-filters | Volledige nie-geauthentiseerde RCE-ketting op enige Linux desktop/server met CUPS-browsing geaktiveer |
| 2024 | CVE-2024-35235 | cupsd 2.4.8- | Symlink trick → arbitrêre **chmod 666** → privilige-eskalasie |
| 2023 | CVE-2023-0856 (Canon) + Pwn2Own | Stack-overflow in `sides` attribuut → afstandkode-uitvoering |
### cups-browsed RCE-ketting (September 2024)
1. `cups-browsed` luister op **UDP/631** vir drukkeradvertensies.
2. 'n Aanvaller stuur 'n enkele gespoofde pakket wat na 'n kwaadwillige IPP-URL wys (CVE-2024-47176).
3. `libcupsfilters` haal outomaties die afstand **PPD** sonder validasie (CVE-2024-47076 & 47175).
4. 'n Gemaakte PPD misbruik die **foomatic-rip** filter om arbitrêre shell-opdragte uit te voer wanneer iets gedruk word (CVE-2024-47177).
Bewys-van-konsep kode is publiek op die navorser se blog en ontploffings vereis **geen outentikasie** nie; netwerktoegang tot UDP/631 is genoeg.
#### Tydelike versagtings
```
sudo systemctl stop cups-browsed
sudo systemctl disable cups-browsed
sudo ufw deny 631/udp # or equivalent firewall rule
```
Patches is in Oktober 2024 deur groot verspreidings vrygestel verseker **cups-filters ≥ 2.0.0**.
### cupsd symlink `Listen` miskonfigurasie (CVE-2024-35235)
Die plasing van 'n simboliese skakel in *cupsd.conf* se `Listen` riglyn veroorsaak dat **cupds (root)** `chmod 666` 'n deur 'n aanvaller gekose pad, wat lei tot skryfbare stelselfeiles en, op Ubuntu, kode-uitvoering via 'n kwaadwillige PPD met `FoomaticRIPCommandLine`.
---
## Offensiewe Tegnieke
* **Ongeauthentiseerde rou drukwerktaak** baie drukkers aanvaar `POST /ipp/print` sonder auth. 'n Kwaadwillige **PostScript** payload kan skulpopdragte (`system("/bin/nc ...")`) op hoë-end toestelle aanroep.
* **Taak Kaap** `Cancel-Job` gevolg deur `Send-Document` laat 'n aanvaller toe om iemand anders se dokument te vervang voordat dit fisies gedruk word.
* **SNMP → IPP kombinasie** standaard gemeenskap `public` lek dikwels die interne wagnaam wat in die IPP URL benodig word.
---
## Defensiewe Beste Praktyke
1. Patch CUPS en drukker firmware vinnig; teken in op verskaffer PSIRT feeds.
2. Deaktiveer `cups-browsed` en UDP/631 tensy zeroconf drukwerk vereis word.
3. Beperk TCP/631 tot vertroude subnetwerke/VPN en handhaaf **TLS (ipps://)**.
4. Vereis **Kerberos/Negotiate** of sertifikaat auth in plaas van anonieme drukwerk.
5. Monitor logs: `/var/log/cups/error_log` met `LogLevel debug2` sal onsamehangende PPD aflaaie of verdagte filter aanroepe wys.
6. In hoë-sekuriteit netwerke, skuif drukwerk na 'n geharde, geïsoleerde drukbediener wat take via USB slegs na toestelle proxy.
## 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}}