mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
104 lines
5.7 KiB
Markdown
104 lines
5.7 KiB
Markdown
# Internet Printing Protocol
|
||
|
||
{{#include ../banners/hacktricks-training.md}}
|
||
|
||
**Internet Printing Protocol (IPP)**, kama ilivyoainishwa katika **RFC 2910** na **RFC 2911**, ni kiwango cha de-facto kwa uchapishaji wa mtandao. Inakaa juu ya **HTTP/1.1** (iwe ni maandiko wazi au TLS) na inatoa API tajiri kwa ajili ya kuunda kazi za uchapishaji, kuuliza uwezo wa printer na kusimamia foleni. Upanuzi wa kisasa kama **IPP Everywhere** hata unaruhusu uchapishaji bila madereva kutoka kwa mazingira ya simu na wingu, wakati muundo sawa wa pakiti umerejelewa kwa printers za 3-D.
|
||
|
||
Kwa bahati mbaya, kufichua bandari **631/tcp (na 631/udp kwa ajili ya kugundua printer)** mara nyingi husababisha matatizo makubwa ya usalama – kwa printers za ofisi za jadi na kwenye mwenyeji yeyote wa Linux/Unix unaendesha **CUPS**.
|
||
|
||
---
|
||
## Quick PoC – crafting raw IPP with Python
|
||
```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])
|
||
```
|
||
---
|
||
## Uhesabu & Upelelezi
|
||
|
||
### 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>
|
||
```
|
||
The `cups-info` script inatoa mfano, hali na takwimu za foleni wakati `cups-queue-info` inataja kazi zinazongoja.
|
||
|
||
### 2. IPP utilities kutoka CUPS
|
||
* `ippfind` – ugunduzi wa multicast/UDP (inafanya kazi dhidi ya cups-browsed):
|
||
```bash
|
||
ippfind --timeout 3 --txt -v "@local and port=631" # orodhesha printers
|
||
```
|
||
* `ipptool` – maombi ya kawaida yaliyofafanuliwa katika faili ya *.test*:
|
||
```bash
|
||
ipptool -tv ipp://<IP>/ipp/print get-printer-attributes.test
|
||
```
|
||
Faili iliyojumuishwa *get-printer-attributes.test* inachunguza toleo la firmware, fomati za hati zinazoungwa mkono, n.k.
|
||
|
||
### 3. Shodan / Censys dorks
|
||
```bash
|
||
shodan search 'product:"CUPS (IPP)" port:631'
|
||
```
|
||
Zaidi ya **70,000** wenyeji walikuwa wakionyesha hadharani CUPS mnamo Aprili 2025.
|
||
|
||
---
|
||
## Uthibitisho wa Hivi Karibuni (2023-2025)
|
||
|
||
| Mwaka | CVE ID(s) | Kipengele kilichoathirika | Athari |
|
||
|------|-----------|--------------------|--------|
|
||
| 2025 | CVE-2023-50739 | Lexmark firmware (IPP parser) | Heap-overflow → RCE kupitia Wi-Fi/LAN |
|
||
| 2024 | CVE-2024-47076, 47175, 47176, 47177 | cups-browsed, libcupsfilters, libppd, cups-filters | Mnyororo wa RCE usio na uthibitisho kamili kwenye desktop/server yoyote ya Linux iliyo na CUPS browsing imewezeshwa |
|
||
| 2024 | CVE-2024-35235 | cupsd 2.4.8- | Njia ya symlink → **chmod 666** isiyo na mipaka → kupandisha hadhi |
|
||
| 2023 | CVE-2023-0856 (Canon) + Pwn2Own | Stack-overflow katika sifa ya `sides` → utekelezaji wa msimbo wa mbali |
|
||
|
||
### Mnyororo wa RCE wa cups-browsed (Septemba 2024)
|
||
1. `cups-browsed` inasikiliza kwenye **UDP/631** kwa matangazo ya printer.
|
||
2. Mshambuliaji anatumia pakiti moja ya kudanganya ikielekeza kwenye URL ya IPP mbaya (CVE-2024-47176).
|
||
3. `libcupsfilters` inapata kiotomatiki **PPD** ya mbali bila uthibitisho (CVE-2024-47076 & 47175).
|
||
4. PPD iliyoundwa inatumia kichujio cha **foomatic-rip** kutekeleza amri za shell zisizo na mipaka kila wakati kitu kinapochapishwa (CVE-2024-47177).
|
||
|
||
Msimbo wa uthibitisho wa dhana upo hadharani kwenye blogu ya mtafiti na unahitaji **hakuna uthibitisho**; ufikiaji wa mtandao kwa UDP/631 unatosha.
|
||
|
||
#### Njia za muda za kupunguza
|
||
```
|
||
sudo systemctl stop cups-browsed
|
||
sudo systemctl disable cups-browsed
|
||
sudo ufw deny 631/udp # or equivalent firewall rule
|
||
```
|
||
Patches zilitolewa na usambazaji mkubwa mnamo Oktoba 2024 – hakikisha **cups-filters ≥ 2.0.0**.
|
||
|
||
### cupsd symlink `Listen` misconfiguration (CVE-2024-35235)
|
||
Kuweka kiungo cha alama katika *cupsd.conf*’s `Listen` directive kunasababisha **cupds (root)** kufanya `chmod 666` kwenye njia iliyochaguliwa na mshambuliaji, ikisababisha faili za mfumo zinazoweza kuandikwa na, kwenye Ubuntu, utekelezaji wa msimbo kupitia PPD mbaya na `FoomaticRIPCommandLine`.
|
||
|
||
---
|
||
## Mbinu za Kihalifu
|
||
|
||
* **Kazi ya uchapishaji isiyo na uthibitisho** – printers nyingi zinakubali `POST /ipp/print` bila uthibitisho. Payload mbaya ya **PostScript** inaweza kuita amri za shell (`system("/bin/nc ...")`) kwenye vifaa vya hali ya juu.
|
||
* **Kuhijack Kazi** – `Cancel-Job` ikifuatwa na `Send-Document` inaruhusu mshambuliaji kubadilisha hati ya mtu mwingine kabla ya kuchapishwa kimwili.
|
||
* **SNMP → IPP combo** – jamii ya chaguo-msingi `public` mara nyingi inavuja jina la foleni ya ndani inayohitajika katika URL ya IPP.
|
||
|
||
---
|
||
## Mbinu Bora za Kijamii
|
||
1. Sasisha CUPS na firmware ya printer mara moja; jiandikishe kwa feeds za PSIRT za muuzaji.
|
||
2. Zima `cups-browsed` na UDP/631 isipokuwa uchapishaji wa zeroconf unahitajika.
|
||
3. Punguza TCP/631 kwa subnets/VPN zinazotegemewa na enforce **TLS (ipps://)**.
|
||
4. Hitaji **Kerberos/Negotiate** au uthibitisho wa cheti badala ya uchapishaji wa bila majina.
|
||
5. Fuata kumbukumbu: `/var/log/cups/error_log` na `LogLevel debug2` itaonyesha upakuaji wa PPD zisizo thabiti au mwito wa chujio wa kutatanisha.
|
||
6. Katika mitandao ya usalama wa juu, hamasisha uchapishaji kwenye seva ya uchapishaji iliyoharibiwa, iliyotengwa ambayo inapeleka kazi kwa vifaa kupitia USB pekee.
|
||
|
||
## Marejeleo
|
||
- Akamai – “Uthibitisho wa RCE wa Linux wa Kihafidhina katika CUPS — Kile Tunachojua na Jinsi ya Kujiandaa”, Aprili 2025.
|
||
- Debian Security Tracker – maelezo ya CVE-2024-35235.
|
||
{{#include ../banners/hacktricks-training.md}}
|