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
4de7f1abb1
commit
10618a65c9
@ -1,23 +1,103 @@
|
|||||||
|
# Internet Printing Protocol
|
||||||
|
|
||||||
{{#include ../banners/hacktricks-training.md}}
|
{{#include ../banners/hacktricks-training.md}}
|
||||||
|
|
||||||
# Internet Printing Protocol \(IPP\)
|
**Internet Printing Protocol (IPP)**, kako je navedeno u **RFC 2910** i **RFC 2911**, je de-facto standard za mrežno štampanje. Osnovan je na **HTTP/1.1** (bilo u čistom tekstu ili TLS) i nudi bogat API za kreiranje štampanja, upit mogućnosti štampača i upravljanje redovima. Moderne ekstenzije kao što su **IPP Everywhere** čak omogućavaju štampanje bez drajvera iz mobilnih i cloud okruženja, dok je isti format paketa ponovo korišćen za 3-D štampače.
|
||||||
|
|
||||||
**Internet Printing Protocol (IPP)**, kako je navedeno u **RFC2910** i **RFC2911**, služi kao osnova za štampanje preko interneta. Njegova sposobnost da se proširi prikazana je razvojem kao što je **IPP Everywhere**, koji ima za cilj da standardizuje mobilno i cloud štampanje, kao i uvođenjem ekstenzija za **3D štampanje**.
|
Nažalost, izlaganje porta **631/tcp (i 631/udp za otkrivanje štampača)** često dovodi do ozbiljnih bezbednosnih problema – kako na tradicionalnim kancelarijskim štampačima, tako i na bilo kojem Linux/Unix hostu koji pokreće **CUPS**.
|
||||||
|
|
||||||
Korišćenjem **HTTP** protokola, IPP koristi uspostavljene sigurnosne prakse uključujući **basic/digest authentication** i **SSL/TLS encryption**. Akcije kao što su slanje štampanja ili upit o statusu štampača vrše se putem **HTTP POST requests** usmerenih ka IPP serveru, koji radi na **port 631/tcp**.
|
---
|
||||||
|
## Quick PoC – crafting raw IPP with Python
|
||||||
Poznata implementacija IPP-a je **CUPS**, open-source sistem za štampanje prisutan u raznim Linux distribucijama i OS X. I pored svoje korisnosti, IPP, slično LPD-u, može biti iskorišćen za prenos malicioznog sadržaja putem **PostScript** ili **PJL files**, što ističe potencijalni sigurnosni rizik.
|
|
||||||
```python
|
```python
|
||||||
# Example of sending an IPP request using Python
|
import struct, requests
|
||||||
import requests
|
|
||||||
|
|
||||||
url = "http://printer.example.com:631/ipp/print"
|
# Minimal IPP Get-Printer-Attributes request (operation-id 0x000B)
|
||||||
headers = {"Content-Type": "application/ipp"}
|
ipp = struct.pack(
|
||||||
data = b"..." # IPP request data goes here
|
">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)
|
r = requests.post("http://printer:631/ipp/print", headers={"Content-Type":"application/ipp"}, data=ipp)
|
||||||
print(response.status_code)
|
print(r.status_code, r.content[:40])
|
||||||
```
|
```
|
||||||
Ako želite da saznate više o [**hakovanju štampača pročitajte ovu stranicu**](http://hacking-printers.net/wiki/index.php/Main_Page).
|
---
|
||||||
|
## Enumeracija & 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. IPP алати из CUPS
|
||||||
|
* `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 дorks
|
||||||
|
```bash
|
||||||
|
shodan search 'product:"CUPS (IPP)" port:631'
|
||||||
|
```
|
||||||
|
Više od **70 000** hostova je javno izlagalo CUPS u aprilu 2025.
|
||||||
|
|
||||||
|
---
|
||||||
|
## Nedavne ranjivosti (2023-2025)
|
||||||
|
|
||||||
|
| Godina | CVE ID(s) | Pogođena komponenta | Uticaj |
|
||||||
|
|--------|-----------|---------------------|--------|
|
||||||
|
| 2025 | CVE-2023-50739 | Lexmark firmware (IPP parser) | Heap-overflow → RCE preko Wi-Fi/LAN |
|
||||||
|
| 2024 | CVE-2024-47076, 47175, 47176, 47177 | cups-browsed, libcupsfilters, libppd, cups-filters | Potpuna neautentifikovana RCE lanac na bilo kom Linux desktop/serveru sa omogućenim CUPS pretraživanjem |
|
||||||
|
| 2024 | CVE-2024-35235 | cupsd 2.4.8- | Symlink trik → proizvoljni **chmod 666** → eskalacija privilegija |
|
||||||
|
| 2023 | CVE-2023-0856 (Canon) + Pwn2Own | Stack-overflow u `sides` atributu → daljinsko izvršavanje koda |
|
||||||
|
|
||||||
|
### cups-browsed RCE lanac (septembar 2024)
|
||||||
|
1. `cups-browsed` sluša na **UDP/631** za oglase štampača.
|
||||||
|
2. Napadač šalje jedan lažirani paket koji ukazuje na zloćudni IPP URL (CVE-2024-47176).
|
||||||
|
3. `libcupsfilters` automatski preuzima udaljeni **PPD** bez validacije (CVE-2024-47076 & 47175).
|
||||||
|
4. Prilagođeni PPD zloupotrebljava **foomatic-rip** filter da izvrši proizvoljne shell komande svaki put kada se nešto štampa (CVE-2024-47177).
|
||||||
|
|
||||||
|
Kod za dokazivanje koncepta je javan na blogu istraživača i eksploati zahtevaju **nema autentifikacije**; mrežni pristup UDP/631 je dovoljan.
|
||||||
|
|
||||||
|
#### Privremene mitigacije
|
||||||
|
```
|
||||||
|
sudo systemctl stop cups-browsed
|
||||||
|
sudo systemctl disable cups-browsed
|
||||||
|
sudo ufw deny 631/udp # or equivalent firewall rule
|
||||||
|
```
|
||||||
|
Patches su objavljeni od strane glavnih distribucija u oktobru 2024 – osigurajte **cups-filters ≥ 2.0.0**.
|
||||||
|
|
||||||
|
### cupsd symlink `Listen` pogrešna konfiguracija (CVE-2024-35235)
|
||||||
|
Postavljanje simboličke veze u *cupsd.conf* direktivi `Listen` uzrokuje da **cupds (root)** `chmod 666` putanju koju bira napadač, što dovodi do zapisivih sistemskih datoteka i, na Ubuntu-u, izvršavanja koda putem zlonamernog PPD-a sa `FoomaticRIPCommandLine`.
|
||||||
|
|
||||||
|
---
|
||||||
|
## Ofanzivne Tehnike
|
||||||
|
|
||||||
|
* **Neautentifikovani sirovi print zadatak** – mnogi štampači prihvataju `POST /ipp/print` bez autentifikacije. Zlonameran **PostScript** payload može pozvati shell komande (`system("/bin/nc ...")`) na visokokvalitetnim uređajima.
|
||||||
|
* **Otimačina zadatka** – `Cancel-Job` praćen `Send-Document` omogućava napadaču da zameni dokument nekog drugog pre nego što bude fizički odštampan.
|
||||||
|
* **SNMP → IPP kombinacija** – podrazumevana zajednica `public` često otkriva interno ime reda koje je potrebno u IPP URL-u.
|
||||||
|
|
||||||
|
---
|
||||||
|
## Defensivne Najbolje Prakse
|
||||||
|
1. Hitno ažurirajte CUPS i firmware štampača; prijavite se na PSIRT feed-ove dobavljača.
|
||||||
|
2. Onemogućite `cups-browsed` i UDP/631 osim ako je zeroconf štampanje neophodno.
|
||||||
|
3. Ograničite TCP/631 na pouzdane podmreže/VPN i primenite **TLS (ipps://)**.
|
||||||
|
4. Zahtevajte **Kerberos/Negotiate** ili autentifikaciju putem sertifikata umesto anonimnog štampanja.
|
||||||
|
5. Pratite logove: `/var/log/cups/error_log` sa `LogLevel debug2` će prikazati nesolidne PPD preuzimanja ili sumnjive invokacije filtera.
|
||||||
|
6. U mrežama visoke sigurnosti, prebacite štampanje na ojačan, izolovan print server koji posreduje zadatke uređajima isključivo putem USB-a.
|
||||||
|
|
||||||
|
## Reference
|
||||||
|
- Akamai – “Kritična Linux RCE ranjivost u CUPS-u — Šta znamo i kako se pripremiti”, april 2025.
|
||||||
|
- Debian Security Tracker – detalji o CVE-2024-35235.
|
||||||
{{#include ../banners/hacktricks-training.md}}
|
{{#include ../banners/hacktricks-training.md}}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user