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

This commit is contained in:
Translator 2025-08-14 06:34:39 +00:00
parent c632b4a306
commit 0aac038e61

View File

@ -1,23 +1,103 @@
# Internet Printing Protocol
{{#include ../banners/hacktricks-training.md}}
# Internet Printing Protocol \(IPP\)
**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.
**Internet Printing Protocol (IPP)**, kama ilivyoainishwa katika **RFC2910** na **RFC2911**, inatumika kama msingi wa uchapishaji kupitia intaneti. Uwezo wake wa kupanuliwa unaonyeshwa na maendeleo kama **IPP Everywhere**, ambayo inaimarisha viwango vya uchapishaji wa simu na wingu, na utambulisho wa nyongeza za **3D printing**.
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**.
Kwa kutumia protokali ya **HTTP**, IPP inafaidika na mbinu za usalama zilizowekwa ikiwa ni pamoja na **basic/digest authentication** na **SSL/TLS encryption**. Vitendo kama kuwasilisha kazi ya uchapishaji au kuuliza hali ya printer vinatekelezwa kupitia **HTTP POST requests** zinazolengwa kwenye seva ya IPP, ambayo inafanya kazi kwenye **port 631/tcp**.
Utekelezaji maarufu wa IPP ni **CUPS**, mfumo wa uchapishaji wa chanzo wazi unaojulikana katika usambazaji mbalimbali wa Linux na OS X. Licha ya matumizi yake, IPP, kama LPD, inaweza kutumika vibaya kuhamasisha maudhui mabaya kupitia **PostScript** au **PJL files**, ikionyesha hatari ya usalama inayoweza kutokea.
---
## 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])
```
Ikiwa unataka kujifunza zaidi kuhusu [**hacking printers soma ukurasa huu**](http://hacking-printers.net/wiki/index.php/Main_Page).
---
## 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}}